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

如何在OpenGL Android中获得精确的颜色?,android,colors,opengl-es,color-space,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>

看起来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>
(0.25,0.25,0.25,0.25),(56,57,59,64),(64,64,64,64)
(0.50,0.50,0.50,0.50),(112114118128),(128128)
(0.75,0.75,0.75,0.75),(168171178191),(191)
(1.00,1.00,1.00,1.00),(224228237255),(255255)
如果我将颜色作为字节传递,则得到相同的结果,例如
(64,64,64,64)
生成
(56,57,59,64)
等等

禁用照明,禁用抖动

很明显,这是一些颜色成分的混合变换,一些色温校正,它完全搞砸了

有人知道发生了什么,以及如何禁用此颜色转换吗

注意:这不是glReadPixels的问题,实际上是渲染-在白色表面上渲染的白色对象在屏幕上不是白色的,它有点暗。。。为什么

更新: 所以它归结为GLUtils.texImage2D(…) 如果我不叫这个-白色就是白色。 如果我这样做了,即使在另一个被注释掉的对象渲染上,这个调用也会对整个Gl上下文应用一些颜色变换

那么GLUtils.texImage2D对颜色有什么影响?如何避免这种情况

谜团已解开 这一切都只是为了禁用不应该进行纹理处理的对象的纹理处理…

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


我读过,不过有些不同。。。如果我使用该颜色清除曲面,则glReadPixels()会准确获取(255255255),但如果我渲染所有顶点中都有(255255255)的对象,则会读取(224228237)。它不仅仅是glReadPixels,它实际上是渲染:当我用白色清除表面后渲染白色对象时,我可以看到对象,因为它实际上是用比白色稍暗的颜色绘制的。。。问题是为什么,为什么,为什么该死的白色物体不是白色的。