2010-06-05 3 views
0

OpenGLES 2.0 큐브 응용 프로그램을 만들려고합니다. 큐브의 6면 모두에 질감 (알파 75 %)을 적용하는 것이 아이디어였습니다. 이것은 큐브를 회전 시키더라도 주어진 프레임에서 6면 모두를 볼 수 있다는 것을 의미합니다. 이제 깊이 테스트를 활성화했습니다 (내 앱이 필요합니다!) 및 블렌딩. 깊이 함수는 LEQUAL이고 블렌드 함수는 SRC_ALPHA, ONE_MINUS_SRC_ALPHA입니다.OpenGLES iPhone 깊이 혼합 문제

이제 일부 큐브면에는 기본면이 표시되지 않습니다. 논리가 다른 큐브면과 잘 작동하기 때문에 이것을 이해할 수 없습니다. 기록을 위해 CULL_FACE를 사용 중지했습니다.

미리 감사드립니다.

감사

당황가 정의하기

답변

2

얼굴 당겨진다. 큐브가 회전 할 때 그리기 순서는 변경되지 않습니다. 일부 얼굴은 카메라 가까이에 먼저 그려집니다. 그 후에 어떤 얼굴이 그려지지만, Z- 테스트는 이미 카메라에 가까운 픽셀이 있으므로 그림을 그릴 필요가 없다고 말합니다.

여기서 문제는 OpenGL | ES 2.0이 렌더링 될 때 얼굴을 정렬하지 않는다는 것입니다. 투명도와 깊이를 올바르게 처리하는 것은 3D 프로그래밍에서 실제 과제로 남아 있지만 이와 같은 쉬운 경우에는면을 앞쪽으로 정렬 할 수 있습니다. 앞에 그리는 것을 "페인터의 알고리즘"이라고하며, 정렬은 "깊이 정렬"또는 "z- 정렬"이라고합니다.

, 간단한의 definetly하지 않는 것이 가장 확실 비효율적 인 방법은 다음과 같이 작업 할 수 있습니다를 통해 변환하여 세 정점

  • 화면 공간 프로젝트를 평균을 계산하여 얼굴 의

    1. 계산 센터 정점 카메라 (view + projection) 및 가능한 모델 행렬
    2. 정렬 알고리즘으로 Z 값을 정렬
    3. 정점이있는 정점 버퍼를이 순서로 작성하거나 인덱스 만 다시 작성하십시오. 새로운 순서로 버퍼
    4. 더이 문제를 처리하는 방법과이 밖에 고급 최적화의 모든 종류가 있습니다 평소

    로 큐브를 렌더링 (정점이 변경되지 않은 경우 적은 물건은 주변에 이동합니다). 그러나 나는 이와 같은 단순한 케이스를 다루는 튜토리얼을 발견하지 못했다. 아마 나는 다만 적당한 키워드를 찾아 내지 않았다.

  • +0

    답장을 보내 주셔서 감사합니다. 시도해보십시오. – user359103

    관련 문제