示例#1
0
 def render(self):
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
     glLoadIdentity()
     
     self.__camera.render()
     
     for object in self.__objects:
         object.render()
     
     self.__pygame_display.flip()
 def render(self, visibility = 1.0, topMost = False):
   try:
     # Save and clear both transformation matrices
     glMatrixMode(GL_PROJECTION)
     glPushMatrix()
     glLoadIdentity()
     glMatrixMode(GL_MODELVIEW)
     glPushMatrix()
     glLoadIdentity()
     # Draw the polygon and apply texture
     glBindTexture(GL_TEXTURE_2D, self.animTexs[self.curFrame])
     self.animList()
     # Restore both transformation matrices
     glPopMatrix()
     glMatrixMode(GL_PROJECTION)
     glPopMatrix()
   except:
     Log.error("AnimationPlayer: Error attempting to play animation")
  def render(self, visibility, topMost):
    font = self.engine.data.font

    # render the scene
    try:
      glMatrixMode(GL_PROJECTION)
      glPushMatrix()
      glLoadIdentity()
      gluPerspective(60, self.engine.view.aspectRatio, 0.1, 1000)
      glMatrixMode(GL_MODELVIEW)
      glLoadIdentity()
      
      glPushMatrix()
      self.camera.apply()
  
      self.render3D()
    finally:
      glPopMatrix()
      glMatrixMode(GL_PROJECTION)
      glPopMatrix()
      glMatrixMode(GL_MODELVIEW)
  def draw(self, color = (1, 1, 1, 1), rect = (0,1,0,1), lOffset = 0.0, rOffset = 0.0):
    with cmglPushedSpecificMatrix(GL_TEXTURE):
      with cmglPushedSpecificMatrix(GL_PROJECTION):

        with cmglMatrixMode(GL_PROJECTION):
          self.context.setProjection()

        with cmglPushedMatrix():
          glLoadIdentity()
          self._getEffectiveTransform().applyGL()

          glScalef(self.texture.pixelSize[0], self.texture.pixelSize[1], 1)
          glTranslatef(-.5, -.5, 0)
          glColor4f(*color)

          glEnable(GL_TEXTURE_2D)
          self.texture.bind()

          self.triangVtx[0,0] = 0.0-lOffset
          self.triangVtx[0,1] = 1.0
          self.triangVtx[1,0] = 1.0-rOffset
          self.triangVtx[1,1] = 1.0
          self.triangVtx[2,0] = 0.0+lOffset
          self.triangVtx[2,1] = 0.0
          self.triangVtx[3,0] = 1.0+rOffset
          self.triangVtx[3,1] = 0.0

          self.textriangVtx[0,0] = rect[0]
          self.textriangVtx[0,1] = rect[3]
          self.textriangVtx[1,0] = rect[1]
          self.textriangVtx[1,1] = rect[3]
          self.textriangVtx[2,0] = rect[0]
          self.textriangVtx[2,1] = rect[2]
          self.textriangVtx[3,0] = rect[1]
          self.textriangVtx[3,1] = rect[2]

          cmglDrawArrays(GL_TRIANGLE_STRIP, vertices=self.triangVtx, texcoords=self.textriangVtx)

          glDisable(GL_TEXTURE_2D)
  def setOrthogonalProjection(self, normalize = True, yIsDown = True):
    glMatrixMode(GL_PROJECTION)
    glPushMatrix()
    glLoadIdentity()

    if normalize:
      if yIsDown:
        glOrtho(self.geometryNormalized[0], self.geometryNormalized[2] - self.geometryNormalized[0],
                self.geometryNormalized[3] - self.geometryNormalized[1], self.geometryNormalized[1], -100, 100);
      else:
        glOrtho(self.geometryNormalized[0], self.geometryNormalized[2] - self.geometryNormalized[0],
                self.geometryNormalized[1], self.geometryNormalized[3] - self.geometryNormalized[1], -100, 100);
    else:
      if yIsDown:
        glOrtho(self.geometry[0], self.geometry[2] - self.geometry[0],
                self.geometry[3] - self.geometry[1], self.geometry[1], -100, 100);
      else:
        glOrtho(self.geometry[0], self.geometry[2] - self.geometry[0],
                self.geometry[1], self.geometry[3] - self.geometry[1], -100, 100);

    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
 def setProjection(self, geometry = None):
   geometry = geometry or self.geometry
   with cmglMatrixMode(GL_PROJECTION):
     glLoadIdentity()
     glOrtho(geometry[0], geometry[0] + geometry[2], geometry[1], geometry[1] + geometry[3], -100, 100)
   self.geometry = geometry