2014-07-14 23 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 ...)上看不到這種模式。 –