opengl中的统一变量相同

时间:2010-11-01 03:03:17

标签: glsl uniform

我有两个变量,我在opengl中从shader获得。我这样做。

    vLoc = glGetAttribLocation(progId,"vPosition");
    nLoc = glGetAttribLocation(progId,"vNormal");

matViewLoc = glGetUniformLocation(progId,"matView");
matProjLoc = glGetUniformLocation(progId,"matProj");
matTranslateLoc = glGetUniformLocation(progId,"matTranslate");

vLoc和projLoc返回相同的位置。有谁知道为什么?谢谢!

2 个答案:

答案 0 :(得分:4)

统一位置和属性位置的空间不同,因此您可以使用相同的ID,但它们引用不同的对象。

您不能将属性位置传递给glUniform函数或将统一位置传递给attrib函数。

答案 1 :(得分:0)

使用glBindAttribLocation创建着色器程序时是否绑定了attrib位置?

你需要这样的东西:

glBindAttribLocation(progId, 0, "vPosition");
glBindAttribLocation(progId, 1, "vNormal");