我有一個用GLSL編寫的簡單的OpenGL 3.3片段着色器。sin(x)只對GLSL片段着色器中等大輸入返回4個不同的值,Intel HD4000
#version 330
out vec4 fColor;
void main() {
fColor = vec4(sin(gl_FragCoord.x * gl_FragCoord.y));
}
它工作正常,在我的Nvidia顯卡,但在我的英特爾HD4000正弦只返回四個不同的值:從本質上講,我對中等大的x(10,000 2,000,000之間),這樣的評估sin(x)
(+/- 1.0和約+/- 0.3)高於約10,000的輸入。
系統:Windows 64bit,(Intel)驅動程序版本15.28.20.64.3347。
我的問題:這是一個錯誤?或者它是供應商如何以這種方式實現正弦波的自由的一部分?
這只是我用過的最小化的例子,它適用於我的NVidia和ATI顯卡。不過,爲了完整性,我編輯了版本指令。 –