如何在GLSL代码中激活用户属性?优化(关闭)不起作用

时间:2011-11-28 09:54:25

标签: optimization attributes glsl

顶点着色器:

#version 150

in vec3 MCVertex;
in float pointvar;

uniform mat4 MVMatrix;
uniform mat4 MPMatrix;

void main()
{
    gl_Position = MPMatrix * MVMatrix * vec4(MCVertex, 1.0);
}

我需要'pointvar'属性

但是当我打电话时:

glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, &numAttributes);

numAttribute = 1;

我的代码中有2个属性,numAttribute必须是2。

如果我这样做,我可以激活这个属性:

gl_Position = MPMatrix * MVMatrix * vec4(MCVertex + vec3(pointvar), 1.0);

然后numAttributes = 2,还有其他方法可以激活此属性吗? 我试着#pragma optimize(off),但没有工作。

1 个答案:

答案 0 :(得分:3)

我很确定GLSL会“擦除/忘记”#34;任何未在其代码中使用的统一/属性。

所有信息here

编辑:

  

与制服一样,属性可以是活动的或非活动的。属性   未使用的是不活动的;他们没有约束力。