android - 为什么 glReadPixels 返回意外的颜色格式值?

标签 android opengl-es irrlicht

我想使用带有 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_BGRAnot supported在 OpenGL ES 上。可能由于您隐含地假定支持的某些扩展,它可以在其他设备上工作。

在这种情况下,我希望 OpenGL 设置一个 GL_INVALID_ENUM 错误代码。你检查了吗?

编辑:等等,我没有正确阅读你的问题。那么 MileStone 是在交换 GL_RGBAGL_BGRA 的结果吗?无论扩展如何,这都很奇怪。

关于android - 为什么 glReadPixels 返回意外的颜色格式值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14919393/

相关文章:

android - MPandroidChart - 放大和缩小以仅适合 Y 轴上的值

android - CNC 铣刀 Material 表示

android - 尝试有选择地重绘安卓游戏的背景,但移动图像在屏幕上重复

c++ std::thread 构造函数用法

Android:如何从 LocationManager 发送的 KEY_STATUS_CHANGED 广播 Intent 中找出位置提供者名称?

android - 覆盖方向更改但不重新启动 Activity 并传递状态数据

xcode - 键盘事件不适用于 Xcode 上的 irrlicht

c++ - 我如何找到一个对象是在航路点之前还是之后?

javascript - 安卓服务webview

android - OpenGL ES 中的镜面纹理?