2010-11-01 16 views
1

J'ai deux variables que je reçois de shader dans opengl. Je fais quelque chose comme ça.variables uniformes mêmes dans opengl

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

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

vLoc et projLoc renvoient le même emplacement. Quelqu'un sait-il pourquoi? Merci! Avez-vous lié l'emplacement d'attrib lorsque vous avez créé le programme de shader en utilisant glBindAttribLocation?

Répondre

0

Vous avez besoin quelque chose comme ceci:

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

Non, je n'ai jamais fait dans aucun de mes autres programmes et ils ont tous travaillé. Je l'ai mis juste après vLoc et nLoc mais toujours rien. – ranzy

4

L'espace pour l'emplacement des uniformes et des attributs des emplacements est différent, donc vous pouvez avoir les mêmes ID, mais ils se réfèrent à des objets différents.

Vous ne pouvez pas passer un emplacement d'attribut à une fonction glUniform ou un emplacement uniforme à une fonction attrib.