opengl polygon 三角剖分

        固定管线时代的openGL可以使用GL_POLYGON来描画简单的凸多边形。但是无法直接描画凹的,带孔的或者自交的多边形。

        而非固定管线时代openGL3.*,openGL4.*,直接就没有了GL_POLYGON。

        不管是那种情况,都需要将多边形转化为三角形(三角形,三角带,三角扇)。我们很容易在网络上搜索到gluNewTess这个系列的函数,用来分割多边形。但是所有的例子都是在旧版本openGL下进行的,其实在这个系列函数在新版本openGL中仍然可以使用。现在开始正文,内容比较简单。

1.gluNewTess 创建一个tess对象

2.gluTessProperty 设置下环绕方向

3.gluTessCallback 设置回调函数(GLU_TESS_BEGIN,GLU_TESS_END,GLU_TESS_VERTEX等)

4.gluTessBeginPolygon,gluTessBeginContour,gluTessVertex等函数

以上部分参考网络上的例子。这里只说一下注意的地方。

多边形会被分割为多个面片,每个面片的BeginMode类型是不一样的,有可能是GL_TRIANGLE_STRIP或者GL_TRIANGLE_FAN。比如一个18个点的多边形,可能会被分割成3个面片:6个点组成的GL_TRIANGLE_STRIP,9个点组成的GL_TRIANGLE_FAN,9个点组成的GL_TRIANGLE_STRIP。(数组是我编的,但是a.分割不会创建新点,b.因为存在不同三角形共用点的情况,分割后的点数量大于分割前的。)

基于上面的讨论,我们需要获取每面片的BeginMode和点序列。相关代码如下:

1.

GLenum 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值