현재 2D 게임의 블렌딩 및 깊이 테스트가 있습니다. 내 텍스처를 그릴 때 "위쪽"텍스처는 더 낮은 텍스처가 교차 할 경우 일부 텍스처를 제거합니다. 분명히 텍스처의 투명한 픽셀이 깊이 테스트의 고려 대상이되며, 텍스처가 교차하는 경우 그려진 낮은 텍스처의 모든 색상을 제거합니다. 또한 알파 블렌딩이 잘못 렌더링됩니다. 투명 픽셀을 깊이 테스트에 포함시키지 않도록 OpenGL에 알릴 수있는 함수가 있습니까?iPhone OpenGL ES : 2D 게임용 투명 픽셀이있는 텍스처에 깊이 테스트 적용
2
A
답변
2
아니요. 불가능합니다. 이는 모든 하드웨어 깊이 테스트에 해당됩니다.
GL (전체 또는 ES - 및 D3D)은 모두 동일한 모델을 가지고 있습니다. 사용자가 지정한 다각형 순서로 그립니다. 폴리곤 B 이전에 폴리곤 A를 그렸고 논리적으로 폴리곤 A가 폴리곤 B 앞에 있어야한다면 폴리곤 B는 페인트되지 않습니다 (깊이 테스트의 예의).
해결 방법은 현재보기 원점에서 가장 가까운 것부터 가장 가까운 것부터 순서대로 다각형을 그리는 것입니다. 행복하게 2D 게임에서 이것은 단순한 정렬이어야합니다 (아마도 매우 자주 할 필요조차하지 않을 것입니다).
3D 게임에서 BSP는이 문제에 대한 기본 솔루션입니다.
3
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_EQUAL, 1.0f);
이렇게하면 알파가 완전히 불투명 한 모든 픽셀이 삭제됩니다. 그러면 이러한 픽셀은 Z 버퍼에 렌더링되지 않습니다. 그러나 이는 다양한 Z-Buffer 파이프 라인 최적화에 영향을 미치므로 심각한 속도 저하를 유발할 수 있습니다. 이 실제로 인 경우에만 사용하십시오.
0
어떤 유형의 블렌딩을 사용하고 있습니까?
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
알파가 0 인 조각은 깊이 버퍼에 쓰지 않아야합니다.
2
당신이 쉐이더를 사용하는 경우, 혼합을 해제 시도하고 0
if(texColor.w == 0.0)
discard;
관련 문제
- 1. OpenGL ES 깊이 버퍼
- 2. iPhone + OpenGL ES : oes_depth_texture를 사용하여 깊이 텍스처 값에 액세스
- 3. 기본 2D 텍스처 Howto for iPhone OpenGL ES
- 4. Android OpenGL ES 투명 배경
- 5. Android OpenGL ES 및 2D
- 6. OpenGL ES iPhone Textures
- 7. iPhone OpenGL-ES : UISwipeGestureRecognizer
- 8. Open-GL 텍스처에 색상 적용
- 9. Android OpenGL ES 투명 텍스처의 색상
- 10. opengl es android 안의 투명 안개
- 11. iPhone OpenGL ES 잘못된 알파 블렌딩
- 12. OpenGL-ES 가변 텍스처 알파 (2D)?
- 13. OpenGL ES - 2D 스프라이트 렌더링시 Z 순서
- 14. Android에서 OpenGL ES 2.0을 사용하는 2D 그래픽
- 15. iPhone : OpenGL 렌더링 투명 텍스처
- 16. OpenGL-ES 2.0에서 투명 다각형을 그리는 방법은 무엇입니까?
- 17. OpenGL ES 2에서 스프라이트 쿼드 및 깊이 테스트가 올바르게 수행되었습니다.
- 18. OpenGl ES iPhone, 이상한 라인
- 19. iPhone OpenGL ES Texture2D 마스킹
- 20. iPhone OpenGL-ES 비디오 텍스처
- 21. iPhone : Quartz2d vs. OpenGL ES
- 22. glScissor help (iPhone OpenGL ES)
- 23. OpenGL ES 1.1에서 OpenGL ES 2.0으로 전환
- 24. Quartz 2D 또는 OpenGL ES? 장단점, 다른 플랫폼으로의 마이그레이션 가능성
- 25. Android에서 OpenGL 깊이 버퍼
- 26. OpenGL ES - 텍스처의 색조를 변경하십시오.
- 27. iPhone 시뮬레이터 : OpenGL ES : 내부 텍스처 형식
- 28. OpenGL ES GL_TEXTURE_RECTANGLE
- 29. OpenGL 또는 OpenGL ES
- 30. iPhone OpenGL fps 테스트
는 알파 블렌딩 아닌가요 알파 픽셀을 폐기 할 수는 Z-시험 후에 간다? – noop