Вопрос

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

Это было полезно?

Решение

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

Примечание:

  • Все переменные состояния OpenGL имеют Униформа введите при обращении в Cg.
  • Для свет переменные, то Указатель является обязательным.(Например,:1 дюйм состояние.свет[1]. окружающий)
  • Освещение или лампочки не обязательно включать, чтобы использовать эти соответствующие значения освещенности внутри Cg.Но они должны быть установлены с помощью glLight() функции.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top