osg::CullFace
是OpenSceneGraph中的一个渲染操作节点,用于控制多边形剔除的方向。
当一个物体被渲染时,OpenGL会对其所有的多边形进行片元着色。每个多边形对应一个平面,在物体的背面(平面反方向)的部分,我们看不到它的颜色,因此就不会对渲染结果产生影响。在这种情况下,我们就可以对这些被遮挡的多边形进行剔除,提高渲染效率。
osg::CullFace
节点就是用来控制剔除方向的。默认情况下,osg::CullFace
节点的剔除方向设为osg::CullFace::BACK
,即剔除背向我们的多边形,显示在我们的前面的多边形。
// 设定CullFace的剔除方向为BACK
osg::ref_ptr<osg::CullFace> cull_face = new osg::CullFace();
cull_face->setMode(osg::CullFace::BACK);
常用的剔除方向有两种:osg::CullFace::FRONT
(剔除正面)和osg::CullFace::BACK
(剔除背面)。
// 设定CullFace的剔除方向为FRONT,即剔除正面的多边形
osg::ref_ptr<osg::CullFace> cull_face = new osg::CullFace();
cull_face->setMode(osg::CullFace::FRONT);
除了上述两种剔除方向,还有osg::CullFace::FRONT_AND_BACK
(同时剔除正反两面),以及osg::CullFace::OFF
(不进行剔除)两种。
// 设定CullFace的剔除方向为无效
osg::ref_ptr<osg::CullFace> cull_face = new osg::CullFace();
cull_face->setMode(osg::CullFace::OFF);