0
這裏是我的整個片段着色器的代碼,這是相當簡單:OpenGL ES 2.0的着色器浮點數據精度
precision highp float;
void main(void)
{
float a = 66061311.0;
if(a == 66061312.0)
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
else
gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
}
爲什麼畫面清晰紅色。 當我將a設置爲66061315.0時,屏幕顯示爲綠色。 讓我困惑。根據我的理解,66061311.0在float類型的範圍內。
我該如何解決或解決這個問題?
首先,不要將代碼作爲圖像發佈。只需將其正確插入到您的問題中。其次,我們不知道「顏色」組件的價值。其次,我們不知道你的浮動是以什麼精度宣佈的。如果你選擇'precision mediump float',那麼你可表示的整數範圍是最小的[[-2^15,2^15 -1]],這當然小於你的左手操作數。 – thokra
對不起,我修改了這個問題。我使用highp精度。但結果仍然和以前一樣。我在帶有ARM Mali GPU的PC和Android手機上試過,結果是一樣的。 –