我尝试使用谷歌搜索和搜索堆栈,但我没有找到任何东西:-(
(Mapping irregular shapes or other polygons (cartoons, sprites) to triangles in 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)。 如果有人有更好的方法,请告诉我一个评论 ^^
谢谢: - )
答案 0 :(得分:6)
我还没有尝试过使用OpenGL ES,但是从文档中快速浏览一下,您应该可以使用以下方法绘制凸多边形。一个“三角扇”:
glVertexPointer(2, ..., arrayOfCoordinates)
...
glDrawElements(GL_TRIANGLE_FAN, ... , arrayOfIndices);
你可以把一个“三角扇”想象成一个自行车车轮的辐条,将车轮区域划分为“三角形”(自行车车轮的外缘当然是圆形的,但我希望你能得到这个想法)。
更新:我在网上找到了一个小图:
答案 1 :(得分:3)
Cocos2D是包含OpenGL的酷炫图书馆,有许多有用的功能(主要用于游戏,但不限于此)。
对于多边形镶嵌使用: http://flipcode.net/archives/Efficient_Polygon_Triangulation.shtml 我之前使用它并且效果很好。
答案 2 :(得分:2)
在Wikipedia Polygon Triangulation Talk页面上,我认为更多的三角形实际上会更快。
我写了一个支持空洞的triangulation engine并在O(n log(n))时间内运行。我在Gdk下测试了它,然后用它制作了一个Android应用程序。
答案 3 :(得分:2)
你最后的选择是什么? 我最近测试了以下链接中列出的5个库:http://vterrain.org/Implementation/Libs/triangulate.html
但他们中没有人满意......
iphone-glu:(http://code.google.com/p/iphone-glu/)
Triangulte:(http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml)
三角测量:(http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html)
poly2tri:(http://code.google.com/p/poly2tri/)
openglespolygon:(https://github.com/nroets/OpenGlEsPolygon)
答案 4 :(得分:0)
在非ES OpenGL中,人们倾向于使用GL Utility(glu)库中的曲面细分器。我发现this project的目的是让iPhone可用于iPhone,它声称支持多边形镶嵌 - 如果它有效,那么它将是一个不错的选择。
答案 5 :(得分:0)
如果需要对带孔的多边形进行三角测量,可以尝试使用GPC。
有一种称为gpc_polygon_to_tristrip
的促进作用。
对于渲染使用GL_TRIANGLE_STRIP
。
但首先阅读gpc许可证!