glReadPixles 在设备上返回 0 但适用于模拟器 - iOS 9

Posted

技术标签:

【中文标题】glReadPixles 在设备上返回 0 但适用于模拟器 - iOS 9【英文标题】:glReadPixles returns 0 on device but works on simulator - 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。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

我解决了这个问题。原因是模型在模拟器和设备上以不同的颜色绘制。它们有真实的颜色。有些模型甚至仅使用 alpha 通道绘制,因此 glReadPixels 为它们返回 0、0、0、73 或类似的值。我不知道为什么会这样,但是模拟器和设备上的颜色不同。谢谢你的回答。

以上是关于glReadPixles 在设备上返回 0 但适用于模拟器 - iOS 9的主要内容,如果未能解决你的问题,请参考以下文章

正在尝试在 Android 设备上检索位置...适用于模拟器,但不适用于真实设备

iOS 不会在一台设备上请求 AASA 文件,但适用于所有其他设备

在设备上运行但适用于模拟器时的 iOS 配置文件问题

设备上的应用程序崩溃,但适用于模拟器 iOS

IOS 上的 mvvmcross 绑定问题(适用于模拟器,但某些属性在设备上不起作用)

适用于 Xamarin 的 OneSignal SDK:HandleNotificationReceived 未在华为设备上触发,但 HandleNotificationOpened 它是