我在Android平台(三星Galaxy S2)上使用OpenGL 2.0。 当我通过GL_fragcolor设置一个值(假设是一个完美的灰色阴影)时,我会在渲染场景时将绿色分量设置为红色和蓝色值之上或之下的几个。
" void main() { " +
" vec4 c = texture2D(texture0, tCoord); " +
" c *= vColor; " +
" gl_FragColor = vec4(c.r,c.r,c.r,1); " +
" } ";
正如您所看到的,上述此例程的最终结果应为每个组件输出相同的值。 (这是夸大使用灰度输出问题的临时例程)
拍摄RGB出血问题的屏幕截图。我没有足够的积分在这里张贴图片,所以上传到photobucket ......
http://s1267.photobucket.com/albums/jj556/mrpookie99/?action=view¤t=rgb.png
所以我不知道它是否正在将8位值转换为565值或类似的东西,因为我找不到任何可以将输出分辨率设置到屏幕的文档......
感谢您的帮助,
安德鲁。
答案 0 :(得分:3)
好的,我现在知道为什么会出现这种情况......
如果您使用GLSurfaceView的默认设置,它会为显示@ 565 RGB创建一个16位深的缓冲区......
为了解决这个问题,我将默认缓冲区从16位更改为32位并且所有内容都已修复:)
http://developer.android.com/reference/android/opengl/GLSurfaceView.html
开发者指南的引用: “如果没有调用setEGLConfigChooser方法,那么默认情况下,视图将选择深度缓冲深度至少为16位的RGB_565表面。”
希望将来能帮助别人......