python framebuffer_实现pyglet破坏了我曾经工作过的framebuffer OpenGL cod

这个问题重复了我之前的问题,但是我之前的问题失败了,因为我没有正确地复制一些重要的信息,所以我不得不重做。在

我在调用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。文件没有向我解释我做错了什么。有人能帮忙吗?在

谢谢。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值