OpenGL - 使用统一变量中断着色器

时间:2014-01-21 17:30:30

标签: opengl shader uniform

我的着色器中有一个统一的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. *我没有这个问题。

这里发生了什么?

0 个答案:

没有答案