diff --git a/src/modules/graphics/opengl/Canvas.cpp b/src/modules/graphics/opengl/Canvas.cpp index 7c4a952fb..f4f5b1838 100644 --- a/src/modules/graphics/opengl/Canvas.cpp +++ b/src/modules/graphics/opengl/Canvas.cpp @@ -555,12 +555,16 @@ bool Canvas::checkCreateStencil() GLenum attachment = GL_STENCIL_ATTACHMENT; // Prefer a combined depth/stencil buffer. - if (GLAD_ES_VERSION_3_0 || GLAD_VERSION_3_0 || GLAD_ARB_framebuffer_object - || GLAD_EXT_packed_depth_stencil || GLAD_OES_packed_depth_stencil) + if (GLAD_ES_VERSION_3_0 || GLAD_VERSION_3_0 || GLAD_ARB_framebuffer_object) { format = GL_DEPTH24_STENCIL8; attachment = GL_DEPTH_STENCIL_ATTACHMENT; } + else if (GLAD_EXT_packed_depth_stencil || GLAD_OES_packed_depth_stencil) + { + format = GL_DEPTH24_STENCIL8_OES; + attachment = GL_DEPTH_ATTACHMENT; + } glGenRenderbuffers(1, &depth_stencil); glBindRenderbuffer(GL_RENDERBUFFER, depth_stencil); @@ -572,6 +576,8 @@ bool Canvas::checkCreateStencil() // Attach the stencil buffer to the framebuffer object. glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, depth_stencil); + if (format == GL_DEPTH24_STENCIL8_OES) + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depth_stencil); glBindRenderbuffer(GL_RENDERBUFFER, 0);