osg::ScissorIndexed是OpenSceneGraph中的一个类,用于区分不同的glScissor()
剪裁区域。
osg::ScissorIndexed 有一个构造函数,可以通过传入参数创建一个新的实例。
osg::ScissorIndexed(int index, const osg::Vec4i& scissor)
其中,index
参数是一个整数,代表该剪裁区域的序号;scissor
参数是一个osg::Vec4i
类型的向量,代表该剪裁区域的坐标和宽高。在OpenGL中,每个序号对应一个剪裁区域,最大支持16个。
// 创建4个剪裁区域
osg::ref_ptr<osg::ScissorIndexed> scissor1 = new osg::ScissorIndexed(0, {0, 0, 400, 400});
osg::ref_ptr<osg::ScissorIndexed> scissor2 = new osg::ScissorIndexed(1, {400, 0, 400, 400});
osg::ref_ptr<osg::ScissorIndexed> scissor3 = new osg::ScissorIndexed(2, {400, 400, 400, 400});
osg::ref_ptr<osg::ScissorIndexed> scissor4 = new osg::ScissorIndexed(3, {0, 400, 400, 400});
// 将这4个剪裁区域添加到StateSet中
osg::ref_ptr<osg::StateSet> stateSet = new osg::StateSet;
stateSet->setScissorIndexed(0, scissor1.get());
stateSet->setScissorIndexed(1, scissor2.get());
stateSet->setScissorIndexed(2, scissor3.get());
stateSet->setScissorIndexed(3, scissor4.get());