2012-05-20 76 views
0

我在android平臺(Samsung Galaxy S2)上使用OpenGL 2.0。 當我通過GL_fragcolor設置一個值,該值被認爲是一個完美的灰色陰影時,我會在渲染場景時獲取綠色分量,它高於或低於紅色和藍色值。Android openGL es 2.0 RGB使用GL_fragcolor時的值不正確

" void main() {        " + 
"  vec4 c = texture2D(texture0, tCoord); " + 
"  c *= vColor;       " + 
"  gl_FragColor = vec4(c.r,c.r,c.r,1);  " + 
" }           "; 

正如你所看到的,這個例程的最終結果應該爲每個組件輸出相同的值。 (這是用於誇大使用灰度輸出的問題的臨時例程)

拍攝RGB出血問題的屏幕截圖。我沒有足夠的積分,張貼在這裏PIC所以它上傳到...的photobucket

http://s1267.photobucket.com/albums/jj556/mrpookie99/?action=view&current=rgb.png

所以我不知道這是否是8位值轉換爲565的值或者類似的東西因爲我無法找到可輸出分辨率設置爲屏幕上的任何文件...

感謝您的幫助,

安德魯。

回答

3

好吧,我現在知道爲什麼發生這種情況...

如果您使用GLSurfaceView它創建顯示@ 565 RGB 16位深的緩衝區的默認設置...

要獲得解決這個問題,我改變默認緩衝從16位到32位,並全部固定:)

http://developer.android.com/reference/android/opengl/GLSurfaceView.html

從顯影劑導向引述: 「如果沒有setEGLConfigChooser方法被調用,則b默認情況下,視圖將選擇深度緩衝深度至少爲16位的RGB_565表面。「

希望這可以幫助他人未來...