glReadPixels()失败,但用GL峎RGB替换GL峎RGBA可以在pyg内部工作

2024-09-25 14:20:10 发布

您现在位置:Python中文网/ 问答频道 /正文

在ubuntu14.04上,我正在测试一个使用pyglet的开源项目。 我直接和单独运行/usr/bin/Xorg,使用带有Nvidia GPU的Nvidia驱动程序。在

项目有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,我试图通过修改2行here将其更改为使用GL_RGB。在

我没有预料到,但是GL_RGB使glReadPixels()调用没有出现错误,尽管我不能使用它,因为开源项目假定它是GL_RGBA。在

我真的很想知道如何使GL_RGBA工作。。。在

有人能帮帮我吗?在

更新:我刚刚尝试了另一个选项,我认为将数据类型从GL_UNSIGNED_BYTE更改为GL_UNSIGNED_SHORT起作用(我还将缓冲区的原始类型从GLubyte更改为GLushort)。如果这是对的,这是皮格勒虫吗?在


Tags: 项目imagedatagetusrbuffer错误开源