看起来OpenGL应用了一些色彩空间转换:
渲染,glReadPixels,预期
(0.25,0.25,0.25,0.25), ( 56, 57, 59, 64), ( 64, 64, 64, 64)<br>
(0.50,0.50,0.50,0.50), (112,114,118,128), (128,128,128,128)<br>
(0.75,0.75,0.75,0.75), (168,171,178,191), (191,191,191,191)<br>
(1.00,1.00,1.00,1.00), (224,228,237,255), (255,255,255,255)<br>
如果我将颜色作为字节传递,我会得到相同的结果,例如( 64, 64, 64, 64)
生成( 56, 57, 59, 64)
等等......
禁用照明,禁用抖动
它显然是一些颜色成分混合变换,某种色温校正,它完全搞砸了。
有人知道发生了什么,以及如何禁用此颜色转换?
注意:它不是glReadPixels问题,它实际上是渲染 - 在白色表面上渲染的白色物体在屏幕上不是白色,它有点暗......为什么!?
更新 所以它归结为GLUtils.texImage2D(....) 如果我不打电话给你 - 白色是白色的。 如果我这样做,即使其他渲染的对象被注释掉,此调用也会对整个G1上下文应用一些颜色转换
那么GLUtils.texImage2D对颜色做了什么以及如何避免这种情况?
解开谜团 这一切只是为了禁止纹理化不应该被纹理化的对象......
答案 0 :(得分:0)
glReadPixels()
受glPixelStore()
,glPixelTransfer()
和glPixelMap()
的影响。