在OSG中,默认了6个裁剪平面以去除没有必要显示的物体。也可以自己定义其他的裁剪平面来确定裁剪。
osg::ClipPlane类继承自osg::StateAttribute类,封装了OpenGL中的glClipPlane()函数。
在类的成员函数中,设置裁剪平面的有下面几个函数:
void setClipPlane(const Plane &plane)
void setClipPlane(double a, double b, double c, double d)
void setClipPlane(const Vec4d &plane)
参数都指向一个裁剪平面,裁剪平面可以用Ax+By+Cz+D=0方程表示。因此,A、B、C、D 4个数一次表示裁剪平面方程的4个参数。
上面的方法只是设置一个裁剪平面的参数,如果想要调用该裁剪平面,还需要在属性中开启该裁剪平面,如下面的代码:
root->getOrCreateStateSet()->setAttributeAndModes(cc,osg::StateAttribute::On);
如果在应用程序中药指定多个裁剪平面,此时需要注意指定平面的索引,否则前面先指定的裁剪平面会被覆盖。可以使用下面的函数:
void setClipPlaneNum(unsigned</