2017-05-04 13 views
1

그래서 JAGL 프로젝트를하고 있는데, 나는 상승/하락하고지도를 따라 이동할 수있는 잠수함을 그립니다.이지도는 거대한 quad_strip입니다.부분적으로 잠수함에 잠긴 잠수함을 섞으려고 시도합니다.

어쨌든, 나는 블렌딩을하기 위해 다음 코드를 가지고 있습니다.

gl.glBlendFunc(GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA); 
    gl.glEnable(GL2.GL_BLEND); 
    gl.glDisable(GL2.GL_DEPTH_TEST); 

    gl.glColor4f(0.949f, 0.816f, 0.588f, 1f); 
    gridFloor.display(drawable); 

    submarine.setHeight(subHeight); 
    submarine.display(drawable); 

    gl.glColor4f(0.298f, 0.7333f, 0.909f, 0.04f); 
    gridSea.display(drawable); 

    gl.glFlush(); 

참고 : gridfloor, 잠수함, 그리고 gridsquare 객체는 모든 GLEventListners 있습니다.

이렇게 모든 것이 훌륭하고 멋쟁이입니다. 프린트 할 때, 저는 y = 2에 해저를 표시하고 y = 1.5에 해수면을 위치 시켰습니다. 따라서이 지점의 잠수함은 수위보다 높아야합니다. 그러나 이것이 내가 대신 얻는 것입니다. enter image description here

아마도 당신이 말할 수 있듯이, 나는 JOGL에 매우 익숙하며 어떤 도움이라도 대단히 감사 할 것입니다.

편집 :이 내가 당신이 깊이 테스트를 비활성화하면

enter image description here

답변

2

를 달성하기 위해 노력하고 무엇을, 당신은 화면에 그릴 아무것도 이미 무엇의 위에 그려 질 것입니다. 그래서 물은 잠수함 위에 그려지고 있습니다.

gl.glDisable(GL2.GL_DEPTH_TEST); 

해결책 : 깊이 테스트를 비활성화하지 마십시오.

+0

교사의 말을 인용하자면 - "깊이 테스트 혼합 및 비활성화를 사용하여 바다 표면을 반투명하게 만드십시오." -_- 고마워요, 대우를 받았습니다. –

+0

@RyanTurnbull : 선생님이 블렌딩을 이해하지 못하고, 어느 시점에서 고민 중이며, 심도 테스트를 사용하여 첨가제를 내놓아도 완전히 틀리게 보이지 않는다고 생각할 수 있습니까? 어쨌든 투명한 소재를 렌더링하는 올바른 방법은 * 깊이 테스트 __enabled __ * 및 * 정렬 * 혼합 지오메트리 *를 멀리 근처에 두는 것입니다. – datenwolf