Ich habe diese Funktion zum Zeichnen von 2D-Texturen als Bilder in einer 2D-Ansicht in meiner OpenGL-Anwendung erstellt. Nach einigen Tests stellte ich fest, dass es 1–2 fps pro Textur benötigt. Ich weiß, dass ich in diesem Code wahrscheinlich etwas falsch mache. Irgendwelche Ideen? Ich beschränke die FPS auf 60.
Bearbeiten: Wenn ich das Textur-Rendering deaktiviere, werden etwa 15 % FPS hinzugefügt. Wenn ich die Textwiedergabe deaktiviert habe, werden etwa 15 % der FPS wieder hinzugefügt. Wenn ich beide deaktiviere, werden kaum noch fps verbraucht. IE: 20 von 60 fps, wenn beides eingeschaltet ist. 30 von 60, wenn einer behindert ist. 58 von 60, wenn beide deaktiviert sind.
Beim Rendern des Textes auf einer Schaltfläche (dem Steuerelement, das ich zum Testen verwende) wird der Text nur dann „vorbereitet“, wenn die Schaltflächenbeschriftung festgelegt ist.
Aktualisierter Code, läuft immer noch mit der gleichen Geschwindigkeit, funktioniert aber immer noch gleich:
Code: Select all
def render2DTexture( self, texture, rect, texrect ):
glEnable( GL_TEXTURE_2D )
glBindTexture( GL_TEXTURE_2D, texture )
glBegin( GL_QUADS )
glTexCoord2f( texrect.left, texrect.bottom )
glVertex2i( rect.left, self.windowSize[1] - rect.top )
glTexCoord2f( texrect.right, texrect.bottom )
glVertex2i( rect.left + rect.right, self.windowSize[1] - rect.top )
glTexCoord2f( texrect.right, texrect.top )
glVertex2i( rect.left + rect.right, self.windowSize[1] - ( rect.top + rect.bottom ) )
glTexCoord2f( texrect.left, texrect.top )
glVertex2i( rect.left, self.windowSize[1] - ( rect.top + rect.bottom ) )
glEnd()
glDisable( GL_TEXTURE_2D )
def prepareText( self, text, fontFace, color ):
self.loadFont( fontFace )
bmp = self.fonts[ fontFace ].render( text, 1, color )
return ( pygame.image.tostring( bmp, 'RGBA', 1 ), bmp.get_width(), bmp.get_height() )
def renderText( self, pText, position ):
glRasterPos2i( position[0], self.windowSize[1] - ( position[1] + pText[2] ) )
glDrawPixels( pText[1], pText[2], GL_RGBA, GL_UNSIGNED_BYTE, pText[0] )
Mobile version