참고 : 나는 이미 대답을 찾았습니다 (이 질문 후에 게시 할 것입니다)-내가 올바르게하고 있는지 또는 더 나은 방법이 있는지 궁금합니다.
OpenGL ES (JOGL)를 사용하여 "2.5D"아이소 메트릭 게임을 만들고 있습니다. "2.5D"는 세계가 3D이지만 2D 등각 타일을 사용하여 렌더링됨을 의미합니다.
내가 해결해야했던 원래 문제는 텍스처를 순서대로 (뒤에서 앞으로) 렌더링해야 타일이 올바르게 겹쳐서 적절한 효과를 내야한다는 것입니다. 약간의 독서 후에, 나는 이것이 "오래된 모자"2D 접근법이라는 것을 빨리 깨달았습니다. 플레이어가 3D 세계를 수정할 수 있기 때문에 효율적으로 수행하기가 어려워졌습니다 (따라서 물건이 3D 공간의 어느 곳에 나 나타날 수 있음). 심도 버퍼를 이용하는 것이 논리적 인 것처럼 보였습니다. 즉, 올바른 순서로 물건을 렌더링하는 것에 대해 걱정할 필요가 없었습니다.
그러나 나는 문제에 직면했다. 당신이 사용하는 경우 GL_DEPTH_TEST
와 GL_BLEND
함께, 그것은 그들이 (당신은 투명성이 있어야한다 중복의 이상한 종류를 얻을 수 있음을 의미) Z 순서에 의해 "분류"전에 객체가 배경으로 블렌딩 효과를 만듭니다.
다음은 문제를 설명 해야하는 의사 코드입니다 (실수로 Android 용 libgdx를 사용하고 있습니다).
create() {
// ...
// some other code here
// ...
Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);
Gdx.gl.glEnable(GL10.GL_BLEND);
}
render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
// ...
// bind texture and create vertices
// ...
}
따라서 질문은 투명도 중첩 문제를 어떻게 해결합니까?