带有Core配置文件的OpenSceneGraph中的照明

时间:2019-04-16 10:35:32

标签: opengl opengl-3 openscenegraph

我使用OpenSceneGraph,并且我想使用OpenGL 3.3和Core配置文件的某些功能。我使用选项-DOPENGL_PROFILE=GL3编译了OpenSceneGraph。我得到了我想要的功能,但是OSG的某些功能不再起作用,例如使用osg::Lightosg::LineWidthosg::LineStipple等照明。

我知道OSG主要是建立在GL2功能之上的,并且固定功能管道在核心配置文件中不可用,但是我希望“基本”功能可以使用灯光或线条。

计划在Core配置文件中支持这些功能吗?还是我必须自己实现着色器?还是有任何现有的实现?

1 个答案:

答案 0 :(得分:1)

照明和点画是GL2 /旧版功能。当您使用GL3 / Core时,您将失去做这些事情的全部能力,而无需编写自己的着色器。

尽管OSG可以尝试为您自动执行这些操作,但实际上,您只能在非常短的时间内使用该功能,而不必绕过它,而只是编写自己的着色器。查看可以在图形上手动执行的ShaderGen Visitor,以帮助您完成其中的一些操作:https://github.com/openscenegraph/OpenSceneGraph/blob/master/src/osgUtil/ShaderGen.cpp

可以将灯光等数据作为Uniforms向下推送到场景图,然后供着色器使用。