iphone - tutorial - opengl es2 0 reference




OpenGL ES-채워진 다각형 그리는 법? (4)

인터넷 검색을 시도했지만 스택을 검색했지만 아무것도 찾지 못했습니다 .--(
( OpenGL ES에서 불규칙한 모양이나 다른 폴리곤 (만화, 스프라이트)을 삼각형으로 매핑 )

OpenGL ES 에서 채워진 다각형을 iPad에서 그리기 (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 ). 누구든지 더 좋은 방법이 있다면, 제발 저에게 의견을 말 해주세요 ^^

감사 :-)


나는 OpenGL ES를 사용하려고하지는 않았지만 문서의 빠른 모양을 보면 "삼각형 팬"을 사용하여 볼록한 다각형을 그릴 수 있어야합니다.

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

"삼각형 팬"을 자전거 바퀴의 쐐기 모양으로 삼각형으로 생각할 수 있습니다 (자전거 바퀴의 바깥 쪽 가장자리는 물론 둥글지만 아이디어를 얻길 바랍니다).

업데이트 : 웹에서 작은 다이어그램을 발견했습니다.


비 ES OpenGL에서 GL 유틸리티 (glu) 라이브러리의 테셀레이터를 사용하는 경향이 있습니다. 이 프로젝트 는 아이폰에서 glu를 사용할 수있게하는 것을 목표로했으며 폴리곤 테셀레이션을 지원한다고 주장합니다. 작동한다면 좋은 옵션이 될 것입니다.


Wikipedia Polygon Triangulation 토론 페이지에서 더 많은 삼각형이 사실 더 빨라질 것이라고 주장합니다.

홀을 지원하고 O (n log (n)) 시간에 실행되는 삼각 측량 엔진 을 작성했습니다. Gdk에서 테스트 한 다음 Android 앱을 만들었습니다.


최종 선택은 무엇입니까? 나는 최근에 아래 링크에 나열된 5 개의 라이브러리를 테스트했다. http://vterrain.org/Implementation/Libs/triangulate.html

그러나 그들 중 누구도 만족하지 않습니다 ...

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

    • 알고리즘의 버그? 채워지지 않은 작은 구멍이 있거나 때때로 다각형 외부로 그려집니다.
  2. Triangulte : (http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml)

    • 구멍을 지원하지 않습니다 ...
  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)

    • 불완전한 알고리즘? 다각형의 가장자리를 따라 작은 구멍 (채워지지 않음)이 있습니다.






tessellation