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

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

18.08.2008 09:10:54
1 ОТВЕТ
РЕШЕНИЕ

Если вы используете какой-либо относительно недавний профиль Cg ( arbvp1 и более поздние версии ), ваши программы шейдеров Cg фактически могут напрямую обращаться к состоянию 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», «Профиль программы вершины OpenBL ARB (arbvp1)» в Руководстве пользователя Cg .

Примечание:

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