我使用OpenSceneGraph,我想使用OpenGL 3.3和Core配置文件的一些功能。我用选项-DOPENGL_PROFILE=GL3
编译了OpenSceneGraph。我得到了我想要的功能,然而,OSG的一些功能不再起作用,如osg::Light
,osg::LineWidth
,osg::LineStipple
等照明。
我知道OSG主要是通过GL2功能构建的,并且固定功能管道在核心配置文件中不可用,但我希望“基本”功能可以作为光或线工作。
是否计划在Core配置文件中支持这些功能?或者我自己必须实现着色器?或者是否有任何现有的实施?
照明和点彩是GL2 /传统功能。当你去GL3 / Core时,如果不编写自己的着色器,你就失去了做这些事情的所有能力。
虽然OSG可以尝试自动为您做这些事情,但在实践中,您只能在非常短的时间内使用该功能,然后才能绕过它并编写自己的着色器。查看ShaderGen访客,您可以在图表上手动执行以帮助您完成以下操作:https://github.com/openscenegraph/OpenSceneGraph/blob/master/src/osgUtil/ShaderGen.cpp
灯光等数据可以作为Uniforms下推到场景图形中,然后可以由着色器使用。