iphone - regla - pentagono regular
OpenGL ES-¿Cómo dibujar un polígono lleno? (6)
Intenté buscar en Google y buscar en la pila, pero no encontré nada :-(
( Mapeo de formas irregulares u otros polígonos (caricaturas, sprites) a triángulos en OpenGL ES )
Quiero dibujar un polígono lleno en OpenGL ES en iPad (2D, no necesito 3D) (Soy nuevo en OpenGL && OpenGL ES) Parece simple en OpenGL pero con ES solo puede dibujar un triángulo.
Pero no puedo encontrar ningún buen tutorial sobre esto :-( ¿Existe algún contenedor / biblioteca o cualquier otra cosa que pueda ayudarme?
No quiero usar CoreGraphics , es demasiado lento para lo que estoy haciendo ^^
Y si es posible, evite una biblioteca demasiado grande como Cocos2D.
Editar : trabajando en el problema, aquí hay algunos enlaces útiles (se editarán)
Campo de golf
- Triangulación de polígono
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 (polígono SIN agujeros) http://www.cs.unc.edu/~dm /CODE/GEM/chapter.html (polígono WITH holes, código C)
Solución
Voy a tratar de usar polígono teselación para obtener triángulos. Primero intentaré ( http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml ) y como necesito un polígono con agujeros, el segundo ( http://www.cs.unc.edu/~ dm / CODE / GEM / chapter.html ). Si alguien tiene una mejor manera, POR FAVOR, dígame con un comentario ^^
Gracias :-)
En OpenGL no-ES, se tiende a utilizar el tessellator de la biblioteca GL Utility (glu). Encontré este proyecto que tiene como objetivo hacer que glu esté disponible para el iPhone y afirma que es compatible con el teselado de polígono; si funciona, sería una buena opción.
No he intentado utilizar OpenGL ES, pero a juzgar por una rápida revisión de la documentación, debería poder dibujar un polígono convexo utilizando, por ejemplo, un "ventilador de triángulo":
glVertexPointer(2, ..., arrayOfCoordinates)
...
glDrawElements(GL_TRIANGLE_FAN, ... , arrayOfIndices);
Puedes pensar en un "ventilador de triángulo" como los radios de una rueda de bicicleta que divide el área de la rueda en "triángulos" (el borde exterior de una rueda de bicicleta es, por supuesto, redondo, pero espero que entiendas la idea).
ACTUALIZACIÓN: encontré un pequeño diagrama en la web:
Cocos2D es una fantástica biblioteca que abarca OpenGL y tiene muchas funciones útiles (principalmente para juegos, pero no se limita a).
Para el uso de la tesselación del polígono: http://flipcode.net/archives/Efficient_Polygon_Triangulation.shtml Lo he usado antes y funcionó bien.
Saludos, Krzysztof Zabłocki
En la página de Wikipedia Polygon Triangulation Talk sostengo que más triángulos de hecho serán más rápidos.
He escrito un motor de triangulación que admite agujeros y se ejecuta en el tiempo O (n log (n)). Lo probé en Gdk y luego creé una aplicación para Android.
¿Cuál es tu elección final? Recientemente probé 5 de las librerías que figuran en el siguiente enlace: http://vterrain.org/Implementation/Libs/triangulate.html
Pero ninguno de ellos es satisfactorio ...
iphone-glu: (http://code.google.com/p/iphone-glu/)
- Errores en el algoritmo? hay pequeños agujeros que no están llenos, o a veces dibujan fuera del polígono
Triangulte: (http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml)
- no admite agujeros ...
Triangulación: (http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html)
- Buggy, a veces se queda sin límites, o índice negativo, etc.
poly2tri: (http://code.google.com/p/poly2tri/)
- Buggy, accidente en ciertos casos
openglespolygon: (https://github.com/nroets/OpenGlEsPolygon)
- algoritmo imperfecto? hay pequeños agujeros (no rellenos) a lo largo de los bordes del polígono
Cuando necesite triangular polígonos con agujeros, puede intentar usar GPC . Hay una función para la tringulación llamada gpc_polygon_to_tristrip
.
Para el render usa GL_TRIANGLE_STRIP
.
¡Pero lea la licencia de gpc primero!