如何在iOS6上创建深度纹理。R16F是一种选择吗?

如何在iOS6上创建深度纹理。R16F是一种选择吗?,ios6,opengl-es-2.0,xcode4.5,depth-buffer,Ios6,Opengl Es 2.0,Xcode4.5,Depth Buffer,我正在尝试将深度写入纹理。我想要线性深度,所以我试着使用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,

我正在尝试将深度写入纹理。我想要线性深度,所以我试着使用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


在iOS6中,EXT_color_buffer_half_float和depth extensions不是处于活动状态吗

我现在也遇到了同样的情况。你找到解决问题的方法了吗?我无法让GL_R16F_EXT工作。。。最后我使用了RGBA32纹理。我没有按照通常的方式对深度进行编码,因为我想在纹理上使用线性插值,所以我对每个通道的256个值进行了线性编码,所以最多可以编码1024个值……听起来不错。感谢您为解决此问题所做的工作=)