我的着色器中有一个统一的vec3导致一些奇怪的行为。如果我在着色器中以任何方式使用它 - 即使它对任何东西都没有实际效果 - 着色器会断开,并且渲染任何使用它的东西。
这是(顶点)着色器:
#version 330 core
layout(std140) uniform ViewProjection
{
mat4 V;
mat4 P;
};
layout(location = 0) in vec3 vertexPosition_modelspace;
smooth out vec3 UVW;
uniform mat4 M;
uniform vec3 cameraPosition;
void main()
{
vec3 vtrans = vec3(vertexPosition_modelspace.x,vertexPosition_modelspace.y,vertexPosition_modelspace.z);
// if(cameraPosition.y == 123456)
// {}
mat4 MVP = P *V *M;
vec4 MVP_Pos = MVP *vec4(vtrans,1);
gl_Position = MVP_Pos;
UVW = vertexPosition_modelspace;
}
如果我像这样使用它,它可以正常工作,但只要取消注释注释行,着色器就会断开。编译或链接着色器时没有错误,glGetError()也没有报错。如果'cameraPosition'以任何方式使用,即使它没有意义,也会发生这种情况。
这只发生在我的笔记本电脑上,运行OpenGL 3.1。在我的PC上使用OpenGL 4. *我没有这个问题。
这里发生了什么?