0

我在 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

所以我不知道它是否将 8bit 值转换为 565 值或类似的值,因为我找不到任何可以将输出分辨率设置为屏幕的文档...

谢谢你的帮助,

安德鲁。

4

1 回答 1

3

好的,我现在知道为什么会出现这种情况了...

如果您使用 GLSurfaceView 的默认设置,它会为显示器创建一个 16 位深的缓冲区 @ 565 RGB ...

为了解决这个问题,我将默认缓冲区从 16 位更改为 32 位,一切都已修复:)

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

开发人员指南中的一句话:“如果没有调用 setEGLConfigChooser 方法,则默认情况下,视图将选择深度缓冲区深度至少为 16 位的 RGB_565 表面。”

希望这对将来的其他人有所帮助...

于 2012-06-16T11:13:53.220 回答