4
4

1 に答える 1

7

iOS デバイスは一般にOES_depth_textureをサポートしているため、拡張機能が存在するデバイスでは、唯一のアタッチメントとして深度テクスチャを持つフレーム バッファ オブジェクトを設定できます。

GLuint g_uiDepthBuffer;
glGenTextures(1, &g_uiDepthBuffer);
glBindTexture(GL_TEXTURE_2D, g_uiDepthBuffer);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, width, height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
// glTexParameteri calls omitted for brevity

GLuint g_uiDepthFramebuffer;
glGenFramebuffers(1, &g_uiDepthFramebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, g_uiDepthFramebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, g_uiDepthBuffer, 0);

テクスチャは、シーンを描画するときに深度バッファに書き込まれるすべての値を受け取り (これには簡単なフラグメント シェーダを使用できます)、 を呼び出す必要なく直接テクスチャから取得できますglCopyTexImage2D

于 2012-10-29T05:08:03.820 に答える