2010-12-17 3 views
0

외부로 페이드 아웃하는 육각형이있는 파티클을 렌더링하려고합니다. 각 입자마다 TRIANGLE_FAN을 사용했습니다. 그러나 투명성이 좋지 않습니다.OpenGL에서 투명도가있는 GL_TRIANGLE_FANs로 파티클 렌더링

glBegin(GL_TRIANGLE_FAN); 
    glColor4f(c.x, c.y, c.z, particle.temperature/100.0); 
    glVertex3f(0, 0, 0); 
    glColor4f(0, 0, 0, 0); 
    glVertex3f(0.866025404 * H/2, 0.5 * H/2, 0); 
    glVertex3f(0, 1 * H/2, 0); 
    // other vertices omitted 
glEnd(); 

출력이 깜박 거리며 일부 프레임에서 불투명 한 객체 위에 검은 색 투명 부분이 그려집니다. 이 버그를 피하기 위해 렌더링 루틴을 어떻게 변경해야합니까? 당신이 관찰하고 무엇

output

+2

블렌드 설정은 어떻게 생깁니 까? – Kos

+0

glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); – Etan

+1

아, 동료 민첩 플레이어 (예 : 화면 하단의 미니 크래프트 아이콘)를 발견했습니다 :-) – Jonathan

답변

3

는 가까운 Z 값은 Z 버퍼에 있기 때문에 그려되지 않는 다른 사람의 뒤에 입자이다.

  1. 입자를 앞쪽으로 그릴 수 있습니다.

  2. 깊이 테스트를 사용하지 않도록 설정할 수도 있지만 표준 알파 블렌딩은 올바르지 않습니다. ALPHA/ONE 모드에서는 모든 파티클을 모으기 때문에 순서가 중요하지 않습니다.

관련 문제