这个问题重复了我之前的问题,但是我之前的问题失败了,因为我没有正确地复制一些重要的信息,所以我不得不重做。在
我在调用OpenGL函数时遇到错误。也许pyglet没有正确初始化OpenGL?错误发生在以前工作的简单函数上:def setup_framebuffer(surface):
#Create texture if not done already
if surface.texture is None:
create_texture(surface)
#Render child to parent
if surface.frame_buffer is None:
surface.frame_buffer = glGenFramebuffersEXT(1)
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, surface.frame_buffer)
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, surface.texture, 0)
glPushAttrib(GL_VIEWPORT_BIT)
glViewport(0,0,surface._scale[0],surface._scale[1])
glMatrixMode(GL_PROJECTION)
glLoadIdentity() #Load the projection matrix
gluOrtho2D(0,surface._scale[0],0,surface._scale[1])
错误是:
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,surface.frame_缓冲区)
ctypes.ArgumentError:参数2::类型错误
错误的类型?那么glGenFramebuffersEXT(1)现在是否给出了错误的类型?为什么会这样?在
在调用该函数之前,我初始化一个类实例来管理我的游戏。以下是init方法:
^{pr2}$
Surface是我创建的一个类,它的行为有点像游戏。表面类,但使用OpenGL纹理。在
该方法设置窗口和OpenGL(问题可能不正确?)在调用它之后,我为我的游戏设置了一些东西,它使用setup_framebuffer函数来渲染纹理。那么pyglet.app.run()被调用,它应该运行我的game\u loop方法,因为我这样做了self.window.set_处理程序(“在画上,self.game\u循环)但我的游戏还没到就崩溃了。在
这是我第一次使用pyglet。文件没有向我解释我做错了什么。有人能帮忙吗?在
谢谢。在