瀏覽代碼

Support combined depth/stencil buffers when using vendor extensions.

Adam M 9 年之前
父節點
當前提交
62b642f28a
共有 1 個文件被更改,包括 8 次插入2 次删除
  1. 8 2
      src/modules/graphics/opengl/Canvas.cpp

+ 8 - 2
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);