Warum ist meine Python OpenGL render2DTexture-Funktion so langsam?Python

Python-Programme
Anonymous
 Warum ist meine Python OpenGL render2DTexture-Funktion so langsam?

Post by Anonymous »

GELÖST: Das Problem bestand tatsächlich darin, time.time() in jedem CPU-Zyklus zu verwenden, um zu sehen, ob der nächste Frame gezeichnet werden sollte oder nicht. Die Zeit, die für die Ausführung von time.time() benötigt wurde, wirkte sich auf die FPS aus.

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] )

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post