1

我从 opengl 的着色器中获得了两个变量。我做这样的事情。

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

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

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

4

2 回答 2

4

统一位置和属性位置的空间是不同的,所以你可以有相同的ID,但它们引用不同的对象。

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

于 2010-11-02T05:22:43.563 回答
0

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

你需要这样的东西:

glBindAttribLocation(progId, 0, "vPosition");
glBindAttribLocation(progId, 1, "vNormal");
于 2010-11-01T03:06:41.563 回答