OSG中的索引数组绘制图元

来源:互联网 发布:腾讯网络手机游戏 编辑:程序博客网 时间:2024/05/22 03:42

一、openGL中,定义了10种图元:GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, GL_POLYGON

十种图元的作用比较简单,就不多介绍。

二、OSG中图元的设置是通过

bool addPrimitiveSet(PrimitiveSet* primitiveset);

所有图元类都继承于PrimitiveSet,不同的图元类可以以不同的方式解释顶点数组(不仅仅是OpenGL的那些方式)

四、osg::DrawArrays

五、osg::DrawElementsUInt

此类依赖两个东西解释顶点数组,第一个当然是顶点数组了,第二个是个索引数组。索引数组是什么呢?举个例子。

有如下两个三角形(ABC)(BCD),如果想以GL_TRIANGLES方式绘制,如果用DrawArrays,就要往顶点数组中插6个顶点ABCBCD,如果三角面巨多,有这么多重复顶点是不可接受的。而使用osg::DrawElementsUInt可以解决此问题。

DrawElementsUInt接受一个索引数组IndexArray,是对顶点数组的索引,如此顶点数组中就可以只放ABCD四个顶点,而索引数组为(123234)6个数字,这样存储代价就小了许多。

DrawElemetnsUInt(osg::PrimitiveSet::TRIANGLES, IndexArray->size(), &IndexArray->front())

0 1
原创粉丝点击