Glsl 统一变量在opengl中是相同的

Glsl 统一变量在opengl中是相同的,glsl,uniform,Glsl,Uniform,我有两个变量,我从opengl中的着色器获得。我是这样做的 vLoc = glGetAttribLocation(progId,"vPosition"); nLoc = glGetAttribLocation(progId,"vNormal"); matViewLoc = glGetUniformLocation(progId,"matView"); matProjLoc = glGetUniformLocation(progId,"matProj"); matTranslat

我有两个变量,我从opengl中的着色器获得。我是这样做的

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

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

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

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

你需要这样的东西:

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

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

你需要这样的东西:

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

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


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

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


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

不,我从未在任何其他程序中传递过属性位置,它们都有效。我把它放在vLoc和nLoc之后,但仍然没有。不,我从来没有在我的任何其他程序中这样做过,它们都起作用了。我把它放在vLoc和nLoc之后,但仍然没有。