2014-01-08 4 views
5

OpenGL ES를 사용하여 Android 용 2D Openstreetmap 렌더링 응용 프로그램을 만들고 있습니다. Android OpenGL ES - 채워진 오목 폴리곤을 그리는 방법?

불행하게도 나는 약 50 점 이상 구성된 그리기 오목 다각형 고민하고있다. 이 아무런 문제가없는 것처럼

gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vertBuff); // size = 2 because 2D 

gl.glDrawElements(GL10.GL_TRIANGLE_FAN, pointCount, GL10.GL_UNSIGNED_SHORT, indexBuff); 

이러한 접근 방식은 다각형 그리기 예를 들어, 한 내 다각형 너무 복잡하지 않은 것처럼 잘 작동 : 내 다각형가 작성되는 것을 달성하기 위하여, 나는 GL10.GL_TRIANGLE_FAN를 사용하고 모든 : GL_TRIANGLE_FAN 항상 첫 번째 점 (이 경우)에서 시작하여 전체 모양이 완료 될 때까지 다음, 삼각형을 그릴이 다른 점을 사용하는

enter image description here

내 문제가있다. 이 enter image description here

(이 예에서는, 도시를 흐르는 강 복잡한 다각형입니다) : 더 복잡한 다각형이 그려 질 경우, 이것은 당신이 여기에서 볼 수있는 문제에

될 수 있습니다

지금 내 질문에이 문제를 피하여 복잡한 다각형도 이 올바르게 채워지도록 채울 수 있습니까?

문제는 오목 폴리곤을 그리는 데 있습니다.

GL_TRIANGLE_FAN 대신 GL_TRIANGLE_STRIP을 사용하면 폴리곤이 올바르게 그려지지만 그 점만 삼각형으로 연결되며 다각형 자체는 채워지지 않습니다.

+0

GL_TRIANGLE_FAN은 안정적으로 [* convex * polygon]을 그릴 수 있습니다. (http://en.wikipedia.org/wiki/Convex_and_concave_polygons) . – user2864740

답변

-3

안 좋은 대답은하지만, 볼록 선체 세대 살펴보고, 당신이 결론에 도달 도움이 될 수 있습니다 : -, 여기 아이폰 OS 문제로 거의 같은 http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/hull/hull.html

+2

복잡한 오목 폴리곤을 그리는 것과 바로 관련이없는 것처럼 보입니다. – user2864740

+0

볼록한 선체는 오목한 다각형입니다. 올바른 경로를 따라 보낼 수있을 것이라고 생각했습니다 :) – BenjaminFranklin

+0

좋아, 어떻게 든 OpenGL과 결합 할 수 있을까요? –

2

당신의 OpenGL ES에 대해 이야기하고 있기 때문에입니다 : OpenGL ES - How to Draw a filled Polygon?

위의 게시물에서는 5 개의 타사 삼각 분할 라이브러리를 나열하고 테스트했지만 그 중 누구도 만족하지는 않습니다.

결론하려면 :

  1. 는 OpenGL ES는 삼각 측량이없고, 따라서 도면 작성 오목 다각형을 지원하지 않는 (구멍 다각형을 언급하지 ...)
  2. OpenGL을 ES 드로잉 고집, 당신은 채워진 경로를 그릴 (쉬운 일이 아닙니다 ...) 삼각 측량에 대한 제 3 자 lib 디렉토리
  3. 사용 graphics.Paint (안드로이드) /있는 CoreGraphics (아이폰 OS)를 발견해야하지만, 성능이 낮은

나 봤어. 경량의 무료 삼각 환형 라이브러리를 찾기 위해 꽤 오랜 시간이 걸리지 만 ...

관련 문제