我有两个变量,我在opengl中从shader获得。我这样做。
vLoc = glGetAttribLocation(progId,"vPosition");
nLoc = glGetAttribLocation(progId,"vNormal");
matViewLoc = glGetUniformLocation(progId,"matView");
matProjLoc = glGetUniformLocation(progId,"matProj");
matTranslateLoc = glGetUniformLocation(progId,"matTranslate");
vLoc和projLoc返回相同的位置。有谁知道为什么?谢谢!
答案 0 :(得分:4)
统一位置和属性位置的空间不同,因此您可以使用相同的ID,但它们引用不同的对象。
您不能将属性位置传递给glUniform函数或将统一位置传递给attrib函数。
答案 1 :(得分:0)
使用glBindAttribLocation创建着色器程序时是否绑定了attrib位置?
你需要这样的东西:
glBindAttribLocation(progId, 0, "vPosition");
glBindAttribLocation(progId, 1, "vNormal");