如何在OpenGL Android中获得精确的颜色?

时间:2016-10-24 01:42:21

标签: android colors opengl-es color-space

看起来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对颜色做了什么以及如何避免这种情况?

解开谜团 这一切只是为了禁止纹理化不应该被纹理化的对象......

1 个答案:

答案 0 :(得分:0)

glReadPixels()glPixelStore()glPixelTransfer()glPixelMap()的影响。

https://www.opengl.org/sdk/docs/man2/xhtml/glReadPixels.xml