在Ubuntu 14.04上,我正在测试一个使用pyglet的开源项目。
我使用带有Nvidia GPU的Nvidia驱动程序直接和单独运行/usr/bin/Xorg
。
该项目有this part:
buffer = pyglet.image.get_buffer_manager().get_color_buffer()
image_data = buffer.get_image_data()
执行第二行时会发生pyglet.gl.lib.GLException: invalid operation
。
因此,我使用PYGLET_DEBUG_GL_*
环境变量进行了调试,并在调用glReadPixels(0, 0, 600, 400, 6407, 5121, <pyglet.image.c_ubyt)
时发现错误。
ColorBufferImage
班级最初使用GL_RGBA
,我尝试将其更改为使用GL_RGB
,修改了2行here。
我没有预料到这一点,但是GL_RGB
使glReadPixels()
调用工作没有错误,但我无法使用它,因为开源项目假定它是GL_RGBA
我真的想知道如何让GL_RGBA
工作......
有人可以帮助我吗?
更新:我刚刚尝试了另一个选项,我认为将数据类型从GL_UNSIGNED_BYTE
更改为GL_UNSIGNED_SHORT
有效(我也更改了缓冲区&# 39;从GLubyte
到GLushort
的原始类型。如果这是对的,这是pyglet的错误吗?