【问题标题】:glReadPixles returns 0 on device but works on simulator - iOS 9glReadPixles 在设备上返回 0 但适用于模拟器 - iOS 9
【发布时间】:2016-01-26 14:19:32
【问题描述】:

我使用glReadPixels 来获取所选像素的颜色:

GLubyte pixels[4]= {0,0,0,0};

glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels);

在模拟器上这很好用。但在真正的 iPad 上,glReadPixels 返回零而不是第一个和第二个组件。

例如,在模拟器上,此代码返回 191、147、222、61 作为 RGBA(尽管它看起来实际上返回 GBRA 而不是 RGBA),而在设备上它返回 0、0、64 , 199 为相同的颜色。看起来第三个组件是 alpha,第四个是绿色而不是相应的蓝色和 alpha。

如何在设备上也获得正确的值? 非常感谢您的任何想法。

【问题讨论】:

    标签: ios objective-c opengl-es ios-simulator ios9


    【解决方案1】:

    我建议在读取像素之前尝试glFlush()。 也许你已经是了。更多上下文可能会有所帮助,例如您正在读取什么类型的帧缓冲区?它是否附加到浮点纹理?您是否在没有双缓冲的情况下从屏幕缓冲区读取? ...

    【讨论】:

    • 我解决了这个问题。原因是模型在模拟器和设备上以不同的颜色绘制。它们有真实的颜色。有些模型甚至仅使用 alpha 通道绘制,因此 glReadPixels 为它们返回 0、0、0、73 或类似的值。我不知道为什么会这样,但是模拟器和设备上的颜色不同。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2011-03-08
    相关资源
    最近更新 更多