9

我尝试在堆栈上进行谷歌搜索和搜索,但没有找到任何东西:-
((将不规则形状或其他多边形(卡通、精灵)映射到 OpenGL ES 中的三角形

我想在 iPad 上的OpenGL ES中绘制一个填充的多边形(2D,不需要 3D)(我是 OpenGL && OpenGL ES 的新手)在 OpenGL 上看起来很简单,但使用 ES 就可以绘制三角形。

但是我找不到任何关于此的好的教程:-(它是否存在任何包装器/库或其他任何可以帮助我的东西?

不想使用 CoreGraphics,这对我正在做的事情来说太慢了^^
如果可能的话,避免像 Cocos2D 这样的(大)库。

编辑:解决问题,这里有一些有用的链接(将编辑)
链接
- 多边形三角剖分
http://www.vterrain.org/Implementation/Libs/triangulate.html
http://en.wikipedia.org/wiki/Polygon_triangulation (WIKI) http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml (没有孔的多边形) http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html(有孔的多边形, C 代码)

解决方案
我将尝试使用多边形镶嵌来获得三角形。首先我要尝试(http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml),因为我需要带孔的多边形,第二个(http://www.cs.unc.edu/~ dm/CODE/GEM/chapter.html)。如果有人有更好的方法,请在评论中告诉我^^

谢谢 :-)

4

6 回答 6

6

我没有尝试使用 OpenGL ES,但从文档中的快速浏览来看,您应该能够使用例如“三角形扇形”绘制凸多边形:

glVertexPointer(2, ..., arrayOfCoordinates)
...
glDrawElements(GL_TRIANGLE_FAN, ... , arrayOfIndices);

您可以将“三角扇”想象为自行车车轮的辐条,将车轮区域划分为“三角形”(自行车车轮的外缘当然是圆形的,但我希望您能理解)。

更新:我在网上找到了一个小图:http://www.cse.msu.edu/~cse472/step6_stuff/step6.1.gif

于 2010-10-06T13:02:39.237 回答
4

Cocos2D是封装 OpenGL 的酷库,有很多有用的功能(主要用于游戏但不限于)。

对于多边形镶嵌使用: http: //flipcode.net/archives/Efficient_Polygon_Triangulation.shtml 我以前使用过它并且效果很好。

于 2010-10-06T12:42:10.713 回答
3

在 Wikipedia Polygon Triangulation Talk 页面上,我认为更多的三角形实际上会更快。

我编写了一个支持孔并在 O(n log (n)) 时间内运行的三角剖分引擎。我在 Gdk 下对其进行了测试,然后用它制作了一个 Android 应用程序。

于 2011-01-21T22:02:21.673 回答
2

你最终的选择是什么?我最近测试了以下链接中列出的 5 个库:http: //vterrain.org/Implementation/Libs/triangulate.html

但没有一个是令人满意的......

  1. iphone-glu: (http://code.google.com/p/iphone-glu/)

    • 算法中的错误?有未填充的小孔,或者有时在多边形之外绘制
  2. 三角:(http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml)

    • 不支持孔...</li>
  3. 三角测量:(http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html)

    • 越野车,有时会超出范围,或负索引等...
  4. poly2tri:(http://code.google.com/p/poly2tri/)

    • 越野车,在某些情况下会崩溃
  5. openglespolygon:(https://github.com/nroets/OpenGlEsPolygon)

    • 算法不完善?沿着多边形的边缘有小洞(未填充)
于 2011-10-27T10:35:53.043 回答
0

在非 ES OpenGL 中,人们倾向于使用 GL Utility (glu) 库中的 tessellator。我发现这个项目旨在为 iPhone 提供 glu,它声称支持多边形镶嵌 - 如果它有效,那么它将是一个不错的选择。

于 2010-10-06T13:18:55.327 回答
0

当您需要对带孔的多边形进行三角剖分时,可以尝试使用GPC。有一个用于三角测量的功能gpc_polygon_to_tristrip

供渲染使用GL_TRIANGLE_STRIP

但请先阅读 gpc 许可证!

于 2014-01-31T14:09:30.013 回答