Python 3.x 用OpenGl和Python3绘制STL

Python 3.x 用OpenGl和Python3绘制STL,python-3.x,opengl,Python 3.x,Opengl,我正在尝试将一个程序从Python2移植到Python3。蟒蛇的一切都很好 OpenGl在尝试绘制对象时返回错误。以下是函数: def draw_facets(self): glPushMatrix() # Ligthing, color and Material Stuff ... ### VBO stuff glBegin(GL_LINES)

我正在尝试将一个程序从Python2移植到Python3。蟒蛇的一切都很好

OpenGl在尝试绘制对象时返回错误。以下是函数:

        def draw_facets(self):
            glPushMatrix()
    
            # Ligthing, color and Material Stuff
            ...
            ### VBO stuff
            glBegin(GL_LINES)

            #   THE ERROR COMES FROM THAT POINT
            self.vertex_buffer.bind()
            glVertexPointer(3, GL_FLOAT, 0, None)
            self.normal_buffer.bind()
            glNormalPointer(GL_FLOAT, 0, None)

            glEnableClientState(GL_VERTEX_ARRAY)
            glEnableClientState(GL_NORMAL_ARRAY)
            glDrawArrays(GL_TRIANGLES, 0, len(self.vertices))
    
            glDisableClientState(GL_NORMAL_ARRAY)
            glDisableClientState(GL_VERTEX_ARRAY)
            self.normal_buffer.unbind()
            self.vertex_buffer.unbind()
    
            glEnd()
            glPopMatrix()
Python返回以下错误:

            File "../libtatlin/actors.py", line 553, in draw_facets
                    glVertexPointer(3, GL_FLOAT, 0, None)
                File "/usr/local/lib/python3.8/dist-packages/PyOpenGL-3.1.5-py3.8.egg/OpenGL/latebind.py", line 43, in __call__
                    return self._finalCall( *args, **named )
                File "/usr/local/lib/python3.8/dist-packages/PyOpenGL-3.1.5-py3.8.egg/OpenGL/wrapper.py", line 818, in wrapperCall
                    storeValues(
                File "/usr/local/lib/python3.8/dist-packages/PyOpenGL-3.1.5-py3.8.egg/OpenGL/arrays/arrayhelpers.py", line 156, in __call__
                    contextdata.setValue( self.constant, pyArgs[self.pointerIndex] )
                File "/usr/local/lib/python3.8/dist-packages/PyOpenGL-3.1.5-py3.8.egg/OpenGL/contextdata.py", line 58, in setValue
                    context = getContext( context )
                File "/usr/local/lib/python3.8/dist-packages/PyOpenGL-3.1.5-py3.8.egg/OpenGL/contextdata.py", line 40, in getContext
                    raise error.Error(
            OpenGL.error.Error: Attempt to retrieve context when no valid context

欢迎提供任何帮助

如何创建OpenGL上下文(窗口)?必须在第一条OpenGL指令之前创建OpenGL上下文。为什么要尝试将
glBegin
/
glEnd
序列与
glDrawArrays
混合?如何创建上下文?“尝试混合使用glBegin/glEnd”是什么意思?创建
OpenGL
上下文有很多不同的方法。如果你编辑你的问题来提供答案,你可能会得到更多的帮助。在OpenGL中编程就像在C中编程:这是非常低级的,很容易让你自食其果,但如果你努力工作,你可以取得惊人的成就。如果您不了解什么是上下文,或者混合使用glBegin/glEnd和glDrawArrays有什么问题,您需要学习OpenGL教程,例如OpenGL超级圣经书。我建议看看ModernGL,这是一个Python包(可通过PyPi/GitHub获得),用于创建简单的3D图形应用程序。