Mesa (arb_fbo): demos: add -ds2 option to fbotexture. c demo to test GL_DEPTH_STENCIL_ATTACHMENT
Brian Paul
brianp at kemper.freedesktop.org
Wed Jan 21 23:32:22 UTC 2009
Module: Mesa
Branch: arb_fbo
Commit: 7e16cd9df6f971b99adb716c73375e134bb27cb4
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e16cd9df6f971b99adb716c73375e134bb27cb4
Author: Brian Paul <brianp at vmware.com>
Date: Wed Jan 21 11:50:31 2009 -0700
demos: add -ds2 option to fbotexture.c demo to test GL_DEPTH_STENCIL_ATTACHMENT
---
progs/tests/fbotexture.c | 34 ++++++++++++++++++++++++++++++----
1 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/progs/tests/fbotexture.c b/progs/tests/fbotexture.c
index 9259363..ced58d3 100644
--- a/progs/tests/fbotexture.c
+++ b/progs/tests/fbotexture.c
@@ -36,6 +36,7 @@ static GLuint DepthRB, StencilRB;
static GLboolean Anim = GL_FALSE;
static GLfloat Rot = 0.0;
static GLboolean UsePackedDepthStencil = GL_FALSE;
+static GLboolean UsePackedDepthStencilBoth = GL_FALSE;
static GLuint TextureLevel = 0; /* which texture level to render to */
static GLenum TexIntFormat = GL_RGB; /* either GL_RGB or GL_RGBA */
static GLboolean Cull = GL_FALSE;
@@ -248,7 +249,7 @@ CleanUp(void)
glDeleteRenderbuffersEXT(1, &DepthRB);
#endif
#if STENCIL
- if (!UsePackedDepthStencil)
+ if (!UsePackedDepthStencil && !UsePackedDepthStencilBoth)
glDeleteRenderbuffersEXT(1, &StencilRB);
#endif
glDeleteFramebuffersEXT(1, &MyFB);
@@ -329,6 +330,18 @@ Init(int argc, char *argv[])
UsePackedDepthStencil = GL_TRUE;
printf("Using GL_EXT_packed_depth_stencil\n");
}
+ else if (strcmp(argv[i], "-ds2") == 0) {
+ if (!glutExtensionSupported("GL_EXT_packed_depth_stencil")) {
+ printf("GL_EXT_packed_depth_stencil not found!\n");
+ exit(0);
+ }
+ if (!glutExtensionSupported("GL_ARB_framebuffer_object")) {
+ printf("GL_ARB_framebuffer_object not found!\n");
+ exit(0);
+ }
+ UsePackedDepthStencilBoth = GL_TRUE;
+ printf("Using GL_EXT_packed_depth_stencil and GL_DEPTH_STENCIL attachment point\n");
+ }
else if (strcmp(argv[i], "-arb") == 0) {
if (!ARB_fbo) {
printf("Sorry, GL_ARB_framebuffer object not supported!\n");
@@ -395,7 +408,7 @@ Init(int argc, char *argv[])
assert(!glIsRenderbufferEXT(DepthRB));
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, DepthRB);
assert(glIsRenderbufferEXT(DepthRB));
- if (UsePackedDepthStencil)
+ if (UsePackedDepthStencil || UsePackedDepthStencilBoth)
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_STENCIL_EXT,
TexWidth - sizeFudge, TexHeight - sizeFudge);
else
@@ -409,8 +422,18 @@ Init(int argc, char *argv[])
assert(i > 0);
/* attach DepthRB to MyFB */
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
- GL_RENDERBUFFER_EXT, DepthRB);
+ if (UsePackedDepthStencilBoth) {
+ /* attach depth/stencil buffer to both attachment points at once */
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,
+ GL_DEPTH_STENCIL_ATTACHMENT,
+ GL_RENDERBUFFER_EXT, DepthRB);
+ }
+ else {
+ /* depth attachment only */
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,
+ GL_DEPTH_ATTACHMENT_EXT,
+ GL_RENDERBUFFER_EXT, DepthRB);
+ }
#endif
CheckError(__LINE__);
@@ -422,6 +445,9 @@ Init(int argc, char *argv[])
GL_STENCIL_ATTACHMENT_EXT,
GL_RENDERBUFFER_EXT, DepthRB);
}
+ else if (UsePackedDepthStencilBoth) {
+ /* nothing: we did a combined depth+stencil attachment above */
+ }
else {
/* make stencil renderbuffer */
glGenRenderbuffersEXT(1, &StencilRB);
More information about the mesa-commit
mailing list