2016-10-24 8 views
3

そのOpenGLは、いくつかの色空間変換を適用するように見えます:OpenGL Androidの正確な色を取得するには?

レンダリング、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(....) に降りてきた - 白は白です。 GLUtils.texImage2Dは色をどのようにするのですか?これを避けるにはどうすればいいですか?

ミステリーglPixelStore()glPixelTransfer()glPixelMap()の影響を受けていることすべてがちょうどテクスチャれることになっていないオブジェクトのためのテクスチャリングを無効にする程度であった ...

答えて

0

glReadPixels()を解決しました。

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

+0

私は明確な表面その色を使用している場合、別の何かががあり... glReadPixels()が(255,255,255)を正確に私を取得しますが、私は、オブジェクトが持つレンダリングあれば、それは((224228237)を読み取り、それを読んで255,255,255)をすべての頂点で使用します。 これは単なるglReadPixelsではなく、実際にレンダリングされています:白い色でサーフェスをクリアした後にレンダリングすると、実際には色よりも少し暗い色が描画されるため、オブジェクトを見ることができます... そして、地獄の白いオブジェクトは白ではありません。 –