2010-11-01 25 views
1

同樣的制服變量我有兩個變量,我是從着色器獲得在OpenGL。我做這樣的事情。在OpenGL

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

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

vLoc和projLoc返回相同的位置。有人會知道爲什麼嗎?謝謝!

回答

0

沒有你綁定ATTRIB位置,當您創建使用glBindAttribLocation着色器程序?

你需要的東西是這樣的:

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

不,我從來沒有在任何我的其他程序做了他們所有的工作。我把它之後VLOC和nLoc但仍然一無所獲。 – ranzy 2010-11-01 03:18:37

4

的空間,統一的位置和屬性的位置是不同的,所以你可以有相同的ID,但它們指的是不同的對象。

你不能傳遞一個屬性的位置到glUniform功能或統一位置的ATTRIB功能。