PyOpenGL非常缓慢。

6
我的问题是,我的程序只显示一个简单的立方体,帧速率限制为120fps,但实际运行只有25fps。我发现所有性能损失都在OpenGL部分,但我无法确定具体是哪里出了问题。
我的问题是:
  • OpenGL在Python中运行得这么慢是正常的吗?
  • 我的旧笔记本电脑是否是问题的一部分?
以下是我用于显示立方体的代码:
def draw(self):
    glBegin(GL_QUADS)#info for OGL: treat following code as surface drawing code
    for surface in self.surfaces:
        x = 0
        for vertex in surface:
            x+=1
            glColor3fv(self.colors[x])
            glVertex3fv(self.verticles[vertex])
    glEnd()

    glBegin(GL_LINES) #info for OGL: treat following code as line drawing code
    for edge in self.edges:
        for vertex in edge:
            glVertex3fv(self.verticles[vertex]) #pass each verticle in the verticles list to glVertex3fv, which creates edges
    glEnd() #info for OGL:no more code incoming
1个回答

10
不,OpenGL运行得这么慢是不正常的。这里的缓慢来自于使用即时模式(glBegin(),glEnd())。基本上,每帧您都要逐个调用这些Python命令,而该卡必须立即生成输出。这在C中很慢,更不用说Python了,因为它是逐行解释的。
您需要的是事先准备好顶点缓冲区(通常称为VBO),然后在渲染时只需提交它们以进行批量渲染。
请查看此wikibook,了解现代OpenGL(> = 2.0)方法:https://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Introduction。它是用C / C ++编写的,但是您可以按照函数调用和原理进行操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接