我正在尝试将深度写入纹理。我想要线性深度,所以我尝试使用我尝试使用 R16F 纹理。我定义了这样的纹理:
glTexImage2D(GL_TEXTURE_2D, 0, GL_R16F_EXT, g_bufferWidth, g_bufferHeight, 0,
GL_RED_EXT, GL_HALF_FLOAT_OES, NULL);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, g_texture, 0);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16,
g_bufferWidth, g_bufferHeight);
但是当在 iPhone5 上使用帧捕获在 Xcode 上进行调试时,我在颜色缓冲区中得到一个未知纹理,并且没有任何内容写入深度缓冲区。
我也尝试过创建深度纹理:
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, g_bufferWidth, g_bufferHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, g_texture, 0);
但在这种情况下,深度缓冲区中似乎也没有写入任何内容。
我可以将事物渲染到深度缓冲区的唯一方法似乎是将第一个纹理定义为 RGBA32 ...
EXT_color_buffer_half_float 和 depth 扩展在 iOS6 中不是处于活动状态吗?