안드로이드 장치 (OpenGL ES 2.0)의 깊이 버퍼에 쓰기가 필요합니다. gl_FragDepth
은 OGL ES 2.0에서 쓸 수 없으므로 해결 방법을 찾아야합니다. 사실, 레이캐스팅을 통해 구체를 렌더링하고 싶습니다. http://www.sunsetlakesoftware.com/2011/05/08/enhancing-molecules-using-opengl-es-20. 그러나이 웹 사이트에서 설명한 솔루션 (glBlendEquation
을 사용하여 깊이를 작성하는 오프 스크린 렌더링 패스)은 GL_MIN_EXT
- 블렌딩이 지원되지 않기 때문에 Android가 아닌 Apple 장치에서만 작동합니다. 내 Tegra3 태블릿에OpenGL ES 2.0에서 깊이 버퍼/깊이 값을 쓰기위한 해결 방법
나는이 방법을 구현 할 수 있었다 : Android GLES20.glBlendEquation not working? (BTW, 내가 선형화 된 깊이 값을 사용하는 것이 좋습니다을, 그들은 더 나은 결과를 얻을!) 그것은 꽤 좋은 작동하지만, 물론이 엔비디아의 GPU에서만 사용할 수 있습니다.
이론적으로 확장자는 GL_EXT_frag_depth
이며 (Can an OpenGL ES fragment shader change the depth value of a fragment? 참조) Android 기기에서도 사용할 수 없습니다.
마지막으로, (오프 스크린 렌더 패스에서) 단 하나의 구에 대한 깊이 버퍼를 작성한 다음 두 번째 렌더 패스에 다음 구의 깊이 버퍼를 쓰고 세 번째 렌더 패스에서 두 개의 버퍼를 결합 할 수 있습니다. 그렇게하면 n 개의 구체에 대해 2 * n + 1 렌더링 패스가 생깁니다. 이것은 비효율적입니다!
아이디어가 부족하기 때문에 제 질문은 다음과 같습니다. OpenGL ES 2.0 안드로이드 장치에 깊이 버퍼를 작성하는 일반적인 방법/해결 방법이 있습니까?
이것은 흥미로운 옵션처럼 들립니다. 내가 기대했던 것만 큼 우아한 해결책은 아니지만, 다른 어떤 것도 없을 것 같다. 아마도 나는 그것을 시도 할 것이다. 심도 정렬은 대부분의 단백질과 다른 작은 분자에 대해 충분히 빠릅니다. – kroneml