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 上的 mvvmcross 绑定问题(适用于模拟器,但某些属性在设备上不起作用)
适用于 Xamarin 的 OneSignal SDK:HandleNotificationReceived 未在华为设备上触发,但 HandleNotificationOpened 它是