OpenGL帧缓冲区android,不带GL_OES_压缩_深度_模板(在Nexus 7 2012上)

OpenGL帧缓冲区android,不带GL_OES_压缩_深度_模板(在Nexus 7 2012上),android,c++,android-ndk,opengl-es-2.0,framebuffer,Android,C++,Android Ndk,Opengl Es 2.0,Framebuffer,如何在不支持GL_OES_packed_depth_stencil的设备上使用深度和模板初始化帧缓冲区(在我的例子中是Nexus 7 2012) 这不起作用: glGenRenderbuffers(1, &depthStencil); glBindRenderbuffer(GL_RENDERBUFFER, depthStencil); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES,

如何在不支持
GL_OES_packed_depth_stencil
的设备上使用深度和模板初始化帧缓冲区(在我的例子中是Nexus 7 2012)

这不起作用:

    glGenRenderbuffers(1, &depthStencil);

    glBindRenderbuffer(GL_RENDERBUFFER, depthStencil);
    glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, width, height);
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthStencil);
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthStencil);

    GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
    //...

可以为深度和模具创建单独的渲染缓冲区:

GLuint depthStencil[2];
glGenRenderbuffers(2, depthStencil);

glBindRenderbuffer(GL_RENDERBUFFER, depthStencil[0]);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height);

glBindRenderbuffer(GL_RENDERBUFFER, depthStencil[1]);
glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, width, height);

glFramebufferRenderbuffer(GL_FRAMEBUFFER,
    GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthStencil[0]);
glFramebufferRenderbuffer(GL_FRAMEBUFFER,
    GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthStencil[1]);

这是行不通的。我正在获取
GL\u FRAMEBUFFER\u未完成的\u附件
(使用
glCheckFramebufferStatus(GL\u FRAMEBUFFER)
)正常结果是我的代码中有另一个错误。答案是正确的。谢谢