有关我的显卡的一些信息:
GL_RENDERER:英特尔(R)G41高速芯片组
OpenGL_VERSION: 2.1.0 - Build 8.15.10.1986
GLSL_VERSION: 1.20 - 英特尔Build 8.15.10.1986
顶点着色器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 的变量不能用作正确的值 我在 Intel HD Graphics 3000 上运行了相同的程序,其中opengl的版本是 3.1 ,而GLSL的版本是 1.4 ,程序运行良好。这是英特尔驱动程序的错误还是我使用的错误?
答案 0 :(得分:-1)
因为intel g41是一个非常弱的gpu。 通过它的唯一方法是升级你的gpu。