2013-08-19 3 views
0

OpenGL ES2를 사용하여 iOS 용 3D 게임을 개발 중입니다. 3D 스프라이트는 배경을 표시하기 위해 약 0.5의 알파 채널로 반투명해야합니다. 문제는 3D 스프라이트의 뒷면이 완전히 보이지 않기를 바라는 것입니다. 즉, 스프라이트의 앞면 만 보길 원합니다 (알파 채널 = 1로 표시되는 것처럼). 배경을 통해 볼 수 있습니다. 이 효과를 얻기 위해 블렌드 함수 나 셰이더 설정이 있습니까?OpenGL ES 2.0에서 3D 스프라이트의 블렌딩 기능

답변

1

아마도 스프라이트가 지오메트리에 텍스처링되어있을 것입니다 (삼각형 또는 삼각형 스트립을 사용하여 그린 쿼드). 당신이 할 필요가 가능 얼굴 컬링입니다 :

glEnable(GL_CULL_FACE); 

이것은 그래픽 파이프 라인의 혼합 단계에 도달도 전에 다각형의 "뒤로"쪽을 그리기 방지 할 수 있습니다 - 그래서 당신은 성능 승리를 얻을 수 너의 시각 효과에 너의 뒤에.

"앞"과 "뒤"면이 일관되게 정의되어 있는지 확인해야합니다. 기본적으로 OpenGL은 정점이 반 시계 방향 인 모든 폴리곤을 정면으로 간주합니다 (반대의 경우도 마찬가지 임). 면 제거 기능을 사용하면 모든 스프라이트가 사라지게됩니다. 왜냐하면 정점이 시계 방향으로되어 있기 때문입니다. 버텍스의 순서를 바꾸거나 OpenGL에게 모두 뒤쪽에 있다는 것을 glFrontFace(GL_CW)으로 알려주십시오.

+0

릭스터 주셔서 감사합니다. GL_CULL_FACE을 (를) 완전히 잊어 버렸습니다. 당신의 제안이 트릭을합니다. – Alex79

관련 문제