我的顯卡的一些信息:
GL_RENDERER:英特爾(R)G41 Express芯片組
OpenGL_VERSION:2.1.0 - 建立8.15.10.1986
GLSL_VERSION:1.20 - 英特爾構建8.15.10.1986爲什麼GLSL着色器無法在Intel G41上工作?
頂點着色器1:
#version 110
attribute vec3 vertexPosition_modelspace;
varying vec3 normal;
varying vec3 vertex;
void light(inout vec3 ver, out vec3 nor);
void main()
{
gl_Position = vec4(vertexPosition_modelspace, 1.0);
light(vertex, normal);
}
頂點着色器2:
#version 110
void light(inout vec3 ver, out vec3 nor)
{
ver = vec3(0.0,1.0,0.0);
//vec3 v = -ver; // wrong line
nor = vec3(0.0,0.0,1.0);
//float f = dot(ver, nor); // wrong line
}
片段着色器:
#version 110
varying vec3 normal;
varying vec3 vertex;
void main()
{
gl_FragColor = vec4(vertex, 1.0);
}
這些着色器效果很好,如果兩條線在第二頂點着色器評論。但是,一旦啓用其中一個,我們會收到錯誤。該錯誤發生在opengl函數glDrawArrays。
看來變量out/inout不能用作正確的值。
我已經英特爾高清顯卡3000這OpenGL的版本是3.1 和 GLSL的版本是1.4 ,且運行良好運行同一程序。這是英特爾驅動程序的錯誤還是我錯誤使用?
你會得到什麼錯誤?你有着色器編譯錯誤嗎?你是否正確地將這些着色器連接在一起? –
當執行glDrawArrays()時,我得到一個錯誤對話框(Visual Studio 2010)。 「xx.exe中0x10173169未處理的異常:0xC0000005:寫入位置0xbaadf00d的訪問衝突」。我認爲這些着色器的彙編和鏈接是正確的。這是我找到的同樣的問題。[鏈接](http://stackoverflow.com/questions/14834180/why-does-this-glsl-shader-work-fine-with-a-geforce-but-flickers-strangely- on-an) – wan