glReadPixels()失败,但用GL_RGB替换GL_RGBA使其工作,在pyglet中

时间:2016-10-09 16:45:00

标签: python opengl pyglet xorg glreadpixels

在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)时发现错误。

堆栈跟踪的pyglet部分位于:12

ColorBufferImage班级最初使用GL_RGBA,我尝试将其更改为使用GL_RGB,修改了2行here

我没有预料到这一点,但是GL_RGB使glReadPixels()调用工作没有错误,但我无法使用它,因为开源项目假定它是GL_RGBA

我真的想知道如何让GL_RGBA工作......

有人可以帮助我吗?

更新:我刚刚尝试了另一个选项,我认为将数据类型从GL_UNSIGNED_BYTE更改为GL_UNSIGNED_SHORT有效(我也更改了缓冲区&# 39;从GLubyteGLushort的原始类型。如果这是对的,这是pyglet的错误吗?

0 个答案:

没有答案