Сведения о вопросе

rjevskii

23:14, 21st August, 2020

Теги

opengl   variables   state   cg    

Доступ к переменным состояния OpenGL в Cg

Просмотров: 509   Ответов: 1

Мне нужно получить доступ к переменным состояния OpenGL (таким как матрицы MVP) в моей программе Cg shader. Я передаю эти значения в мою программу Cg shader вручную, используя вызовы, такие как cgGLSetStateMatrixParameter() в моем коде C/C++. Есть ли более простой способ сделать это?



  Сведения об ответе

#hash

00:40, 25th August, 2020

Если вы находитесь на любом довольно недавнем профиле Cg ( arbvp1 и более поздние версии), ваши программы Cg shader фактически могут получить доступ к состоянию OpenGL (матрицы MVP, параметры материала и освещения) напрямую. Это делает написание этих программ менее болезненным.

Вот некоторые из переменных состояния, к которым можно получить доступ:

MVP матрицы всех типов:

state.matrix.mvp
state.matrix.inverse.mvp
state.matrix.modelview
state.matrix.inverse.modelview
state.matrix.modelview.invtrans
state.matrix.projection
state.matrix.inverse.projection

Легкие и материальные свойства:

state.material.ambient
state.material.diffuse
state.material.specular
state.light[0].ambient

Полный список переменных состояния см. В разделе Доступ к OpenGL State, OpenGL ARB Vertex Program Profile (arbvp1) в руководстве пользователя Cg .

Примечание:

  • Все переменные состояния OpenGL имеют единый тип при обращении в Cg.
  • Для легких переменных индекс является обязательным. (Например: 1 в state.light[1].окружающий )
  • Освещение или свет(ы) не должны быть включены для использования этих соответствующих значений освещенности внутри Cg. Но они должны быть установлены с помощью функций glLight() .


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться