2014-08-31 3 views
1

또한 깊이 버퍼를 채우는 색상 텍스처로 렌더링하려고합니다. 그런 다음 다른 텍스처를 렌더링하려고하지만 첫 번째 렌더링에서 깊이 버퍼에 대한 깊이 테스트를 수행하려고합니다.OpenGL E.S 2.0 LibGDX에서 두 개의 텍스처로 직렬 렌더링을 할 때 깊이 버퍼를 그대로 유지하는 방법은 무엇입니까?

저는 채워진 깊이 값을 컬러 텍스처로 쓰는 것에는 관심이 없습니다. 기존의 채워진 깊이 버퍼를 첫 번째 렌더링에서 유지하고 싶습니다. OpenGL ES 2.0에서 LibGDX를 통해

그래서 깊이 버퍼가있는 FBO가 있습니다.

  1. 가 나는 FBO의 COLOR_ATTACHMENT0이 texB하는
  2. glCheckFramebufferStatus이 완료
  3. 변경 (이것은 내가 기대 값을 생성) 깊이 테스트로 렌더링 반환 texA에 하나의 허용 COLOR_ATTACHMENT0을 설정
  4. glCheckFramebufferStatus 반환 완료
  5. 깊이 테스트로 렌더링 (이 동작은 3 단계의 깊이가없는 것처럼 동작 함)

내 쿼리가 실제로 COLOR_ATTACHMENT를 변경하면 깊이 버퍼가 지워지겠습니까? 그렇지 않다면 내 코드에 다른 문제가 있어야합니다 :(

+0

깊이 버퍼의 내용은 명시 적으로 지우지 않는 한이 시나리오에서 'GL_DEPTH_BUFFER_BIT'가 포함 된'glClear()'호출을 사용하여 유지되어야합니다. –

+0

감사의 말. 나는 내 벌레를 계속 파고있을거야. 내가 찾은 것을 알려주지. – Bucket

답변

1

문제는 예상하지 못했던 일부 libgdx 동작으로 인해 발생했는데, libgdx RenderContext가이 호출을 "Gdx.gl.glDisable (GL20.GL_DEPTH_TEST); "

libgdx ModelBatch는 libgdx RenderContext 인스턴스가 제공되지 않은 경우 자체 인스턴스를 생성합니다 .betaBatch 인스턴스에서 begin이 호출되면 renderContext에서도 begin이 호출되지만 배치가 해당 컨텍스트를 만든 경우에만 내부 RenderContext의 시작으로 깊이 테스트를 포함하여 많은 gl 함수가 비활성화되고 꺼집니다.

해결 방법은 RenderContext의 인스턴스를 자동으로 만드는 것입니다 이것을 귀하의 모델 배치로 전달하십시오. 그런 다음 렌더 컨텍스트에 대한 begin end 호출에서 두 모델 일괄 처리를 모두 래핑하십시오. 배치를 호출하기 전에 gl 깊이 테스트를 다시 활성화하는 것을 기억하십시오.

관련 문제