2014-07-14 17 views
1

我有以下简单片段着色器:不对称和不准确的输出

precision highp float; 
main() 
{ 
gl_FragColor = vec4(0.15, 0.15, 0.15, 0.15); 
} 

我渲染使用帧缓冲器对象的纹理。 当从帧缓冲器读回值I得到以下:

38,38,38,38,39,39,39,39,38,38,38,38,39等

0.15 * 255 = 38.25,所以我希望所有像素都能达到38个,我在桌面GPU(英特尔4000)和Tegra 3上都能获得统一像素。 如果有人能够解决这个问题,我会很高兴。 由于Mali-400MP在Samsung Galaxi s2,s3和s3 mini中使用,对于任何人使用GPGPU移动设备至关重要。

回答

2

它看起来像你的输出被抖动,因为从一个像素遗留下来的错误被转移到下一个被取整的地方。记住GL_DITHER默认在OpenGL中,尝试做一个glDisable(GL_DITHER)。

+0

良好的通话!我只是漫步在不同平台(我的桌面GPU和Tegra 3 ...)上看不到这种模式。 –