2017-12-04 9 views
1

OpenGL ES를 사용하여 각면이 다른 색상의 큐브를 그립니다.렌더링 순서에 따라 객체 가시성이 결정되지만 뷰 포인트에 대한 위치에 따라 결정되지 않습니다.

각면은 두 개의 삼각형으로 구성되어 있습니다. 먼저 GLES20.glUniform4fv를 사용하여 색상을 설정 한 다음 GLES20.glDrawElements를 사용하여 삼각형을 그립니다.

문제는 모든면 (삼각형)이 한면이 다른면과 뒤떨어져 있어도 화면에 표시된다는 것입니다.

렌더링은 측면을 그리는 순서대로 진행됩니다. 즉, 최신 요소는 이전 요소와 겹치지 만 뷰 포인트의 측면 및 정점의 위치는 기반으로하지 않습니다.

개체 가시성이 개체 및 시점의 위치에 의해 결정되도록 미리 설정해야하는 경우 도움을주십시오.

답변

0

깊이 버퍼 또는 트리 기반 알고리즘 사용과 같은 문제에 대한 다양한 접근 방법이 있습니다. OpenGL ES에는 깊이 버퍼링이 내장되어 있습니다. GLES20.glEnable(GLES20.GL_DEPTH_TEST)을 사용하여 활성화 할 수 있습니다. 그리기 전에 깊이 버퍼를 지우거나 무효화 (GLES 3.x)하는 것을 잊지 마십시오. 그러나 부분적으로 투명한 표면을 사용할 때 어려움이 있습니다. 성능에 미치는 영향은 깊이 정밀도, 깊이 버퍼 크기 및 장면 복잡도에 따라 달라집니다.

+0

감사의 사신이 해결되었습니다. (깊이있는 사용 가능 및 관련 함수 호출의 배치는 https://stackoverflow.com/questions/11866686/opengl-es-depth-buffer-android-cant-get-to-work에서 제공됩니다) – Avin

관련 문제