2010-11-01 2 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

Вы связали местоположение атрибута при создании шейдерной программы с помощью функции glBindAttribLocation?

Вам нужно что-то вроде этого:

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

Нет, я никогда не делал ни в одной из моих других программ, и все они работали. Я положил это прямо после vLoc и nLoc, но все равно ничего. – ranzy

4

Пространства для однородных мест и атрибуты местоположения отличается, так что вы можете иметь одинаковые идентификаторы, но они относятся к разным объектам.

Вы не можете передать местоположение атрибута функции glUniform или равномерное местоположение в функцию атрибута.

Смежные вопросы