2010-06-24 2 views
1

일부 Java OpenGL 코드를 작성하고 있습니다 (원칙은 C++ OpenGL과 동일하지만). 나는 특정 항목을 다른 사람 위에 표시하고자하는 상황이 있습니다. 그 항목에 대해 깊이 테스트를 사용하지 않거나 GL_ALWAYS로 설정하여이 작업을 수행 할 수 있습니다. 문제는 위에있는 항목의 색상이 그 아래에있는 항목에 의해 어두워지는 것입니다. 조명 문제인지 또는 블렌딩 문제인지 확실하지 않지만이 항목의 z 위치에 상관없이 색상의 영향을받지 않고 항목의 색상을 표시하려고합니다 (깊이 테스트가 항상 설정되어 있으므로). 이 조명 설정이나 블렌딩 설정이 있습니까?OpenGL 블렌딩 (Java)

덕분에, 제프

+0

두 가지 질문 : 이전에 그렸던 것과 깊이에 관계없이 마지막으로 그려지는 것이 항상 특정 픽셀에 표시되기를 원한다는 뜻입니까? 두 번째로 어디에서나 투명성을 사용하지 않습니까? – DJClayworth

+0

@DJClayworth, 마지막으로 그려지는 객체가 특정 위치에 표시되도록하고 싶습니다. 정확하고 깊이 테스트없이 잘 작동합니다. 네, 투명성을 사용하지 않고 있습니다. 장면을 회전하면 올바르게 보입니다. 정말로 필자는 씬의베이스를 렌더링 한 다음 깊이 테스트를하지 않고 오브젝트의 그룹을 렌더링하고 그 전체 결과를 기본 씬에 렌더링하는 2 패스 렌더링이 필요하다고 생각합니다. –

답변

1

가 나는 순서에 따라 혼자 깊이 설정을 그대로두고, 그러나 당신이 그려 원하는 해당 항목의 그리기 순서 (에 따라 객체의 Z 값을 조정 것,이 상황에서 생각 보통 깊이 대신).

glBegin(GL_WHATEVER); 
    for (int i=0; i<num_objects; i++) 
     glVertex(object[i].x, object[i].y, i/-100.0f); 
glEnd(GL_WHATEVER); 
+0

감사합니다. 그러나이 응용 프로그램에서는 지구본 표면에 물건을 추가하고 사용자가 지구본을 회전시킬 수 있습니다. z 값이 변경되면 항목이 실제로 표면에 표시되지 않습니다. –