我想使用带有 OpenGl ES 1.0 驱动程序的 Irrlicht 来捕获屏幕。
这是我用c++写的代码
glReadPixels(0, 0, 200, 200, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
大多数 Android 设备运行良好。但是 MileStone 与 Android 2.2.3 得到了意想不到的结果。我想要 RGBA 颜色格式,而 MileStone 返回 BGRA 颜色。
最后,我更改了我的代码
glReadPixels(0, 0, 200, 200, GL_BGRA, GL_UNSIGNED_BYTE, pixels);
但是 MileStone 返回 RGBA 颜色。
我有疑问,为什么红色和蓝色是意外的? 什么是正当理由?
最佳答案
GL_BGRA
是 not supported在 OpenGL ES 上。可能由于您隐含地假定支持的某些扩展,它可以在其他设备上工作。
在这种情况下,我希望 OpenGL 设置一个 GL_INVALID_ENUM
错误代码。你检查了吗?
编辑:等等,我没有正确阅读你的问题。那么 MileStone 是在交换 GL_RGBA
和 GL_BGRA
的结果吗?无论扩展如何,这都很奇怪。
关于android - 为什么 glReadPixels 返回意外的颜色格式值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14919393/