docs: def prepare_selection(self, pos_x, pos_y, width, height):
          """Prepares the selection rendering
  
          In order to find out the object being clicked on, the scene has to be rendered again around the clicked position
  
          :param pos_x: x coordinate
          :param pos_y: y coordinate
          """
          glSelectBuffer(self.name_counter * 6)
          viewport = glGetInteger(GL_VIEWPORT)
  
          glMatrixMode(GL_PROJECTION)
          glPushMatrix()
  
          glRenderMode(GL_SELECT)
  
          glLoadIdentity()
  
          if width < 1:
              width = 1
          if height < 1:
              height = 1
          pos_x += width / 2.
          pos_y += height / 2.
          # The system y axis is inverse to the OpenGL y axis
          gluPickMatrix(pos_x, viewport[3] - pos_y + viewport[1], width, height, viewport)
  
          self._apply_orthogonal_view()