Освещение в OpenSceneGraph с профилем Core - PullRequest
0 голосов
/ 16 апреля 2019

Я использую OpenSceneGraph и хочу использовать некоторые функции OpenGL 3.3 и профиль Core. Я скомпилировал OpenSceneGraph с опцией -DOPENGL_PROFILE=GL3. Я получил нужные функции, однако некоторые функции OSG больше не работают, например, освещение с osg::Light, osg::LineWidth, osg::LineStipple и т. Д.

Я знаю, что OSG в основном построен на функциях uppon GL2, и что конвейер с фиксированными функциями недоступен в профиле ядра, но я ожидал, что "базовые" функции, такие как свет или линии, будут работать.

Планируется ли поддержка этих функций в профиле Core? Или я должен сам реализовать шейдеры? Или есть какая-то существующая реализация?

1 Ответ

1 голос
/ 17 апреля 2019

Освещение и зернистость являются GL2 / устаревшими функциями.Когда вы переходите на GL3 / Core, вы теряете все возможности делать это без написания своих собственных шейдеров.

Хотя OSG может попытаться автоматически сделать это за вас, на практике вы можете использовать эту способность только дляОЧЕНЬ короткое время, прежде чем вам пришлось обойти это и просто написать свои собственные шейдеры.Посмотрите на посетителя ShaderGen, который вы можете вручную запустить на своем графике, чтобы помочь вам сделать кое-что из этого: https://github.com/openscenegraph/OpenSceneGraph/blob/master/src/osgUtil/ShaderGen.cpp

Данные для источников света и т. Д. Могут быть перенесены на сценограф в виде Uniforms, которые затем могутиспользоваться вашим шейдером.

...