2011-01-15 4 views
0

나는 항상 생각해 봤던 간단한 질문. 내가 처음에 opengl에 들어서 자, 퍼포먼스를 크게 향상시키기 위해 opengl draw call을 사용하여 "타일"또는 삼각형을 그리는 방법을 찾아야했습니다. 모든 꼭지점을 배열에 넣고 배열을 그려서 그렇게했습니다. 내가 타일을 스크롤 할 때마다 발생하는 한 가지 문제는지도를 얼마나 스크롤했는지에 따라 임의로 배치 된 픽셀이 켜지거나 꺼지는 것을 볼 수있었습니다. 10x10지도에서 약 5-8. 이제 다시 opengl로 돌아 왔고 이번에는 GL_TRiANGLES 대신에 GL_LINE_LOOP를 사용하여 그렸습니다. 이것은 나에게 결코 발생하지 않았지만 그때 GL_LINE_LOOP를 사용할 때 나는 모든 삼각형을 보았습니다. 그러나 그것이 끝났을 때 (왼쪽 아래에서 오른쪽으로, 그래서 오른쪽 상단으로) 거기에서 제가 끝난 곳과 시작한 곳을 연결하는 선이 있습니다. 그 무작위 픽셀의 원인은 이것 때문일까? 아니면 이것과 관련이 없습니다. GL_LINE_LOOP 모드로 인해 끝과 처음을 연결하는 선이 나타나지 않습니까? 아니면지도를 만든 방법과 관련이 없습니다.안드로이드 OpenGL 정점 배열

답변

1

GL_LINE_LOOP은 전혀 다른 드로잉 모드입니다. 픽셀을 타일에 떨어 뜨리는 이유는 아닙니다. 타일이 촘촘한 메쉬를 그릴 때 픽셀을 놓을 가능성이 가장 큰 이유는 일관되게 정점을 계산하지 않는다는 것입니다. 원칙적으로 정점이 두 개의 인접한 삼각형 (또는 쿼드, 선 등)에 의해 공유되는 경우 그 정점의 부동 소수점 좌표는 모든 그리기 호출에 대해 100 % 동일해야합니다. 그렇게하면 타일들 사이에 틈이없이 긴밀한 메쉬를 렌더링 할 수 있습니다. 당신의 문제는 다른 것일지도 모르지만 ... 아마도 Z 싸움 ..하지만 내 추측은 여기서 언급 한 첫 번째 문제입니다.

관련 문제