rendering texture to FBO Stencil using EXT_packed_depth_stencil
Subject : rendering texture to FBO Stencil using EXT_packed_depth_stencil
From: Nick Briggs <email@hidden >
Date: Fri, 9 Nov 2007 16:34:30 +0000
Delivered-to: email@hidden
Delivered-to: email@hidden
Hi
Hi I'm drawing a textured quad into to the stencil buffer, the
problem is when we later test against the buffer all fragments fail
If we draw a white quad instead, the stencils tests work as expected
I'm working inside an FBO, to which we've attached 24-bit depth / 8-
bit stencil texture using EXT_packed_depth_stencil
I'm new to GL_STENCIL_TEST, is it feasible to draw a texture to the
stencil buffer like this?
code below
Cheers
Nick
/* create an 24-bit depth + 8-bit stencil texture */
glGenTextures(1, &_glstencil[index]);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, _glstencil[index]);
glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_DEPTH24_STENCIL8_EXT,
width, height, 0, GL_DEPTH_STENCIL_EXT, GL_UNSIGNED_INT_24_8_EXT,
NULL);
/* bind depth + stencil to fbo */
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_RECTANGLE_ARB , _glstencil
[index], 0);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
GL_STENCIL_ATTACHMENT_EXT, GL_TEXTURE_RECTANGLE_ARB , _glstencil
[index], 0);
glCheckFBO();
...
glClear(GL_STENCIL_BUFFER_BIT);
glClearStencil(0.0f);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_NEVER, 0x0, 0x0);
glStencilOp(GL_INCR, GL_INCR, GL_INCR);
// works
glColor4f(1, 1, 1, 1);
glBegin(GL_QUADS);
glVertex2f(minX+200, minY+200);
glVertex2f(maxX-200, minY+200);
glVertex2f(maxX-200, maxY-200);
glVertex2f(minX+200, maxY-200);
glEnd();
// fails ///////////////////////////////////////////////
glEnable(GL_TEXTURE_RECTANGLE_ARB);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, stencil);
glBegin(GL_QUADS);
glTexCoord2f(minX, minY);
glVertex2f(minX, minY);
glTexCoord2f(maxX, minY);
glVertex2f(maxX, minY);
glTexCoord2f(maxX, maxY);
glVertex2f(maxX, maxY);
glTexCoord2f(minX, maxY);
glVertex2f(minX, maxY);
glEnd();
///////////////////////////////////////////////////////
glStencilFunc(GL_NOTEQUAL, 0x1, 0x1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glEnable(GL_TEXTURE_RECTANGLE_ARB);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture);
glBegin(GL_QUADS);
glTexCoord2f(minX, minY);
glVertex2f(minX, minY);
glTexCoord2f(maxX, minY);
glVertex2f(maxX, minY);
glTexCoord2f(maxX, maxY);
glVertex2f(maxX, maxY);
glTexCoord2f(minX, maxY);
glVertex2f(minX, maxY);
glEnd();
glDisable(GL_TEXTURE_RECTANGLE_ARB);
glDisable(GL_STENCIL_TEST);
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Mac-opengl mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/mac-opengl/email@hidden
This email sent to email@hidden
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE
Contact Apple | Terms of Use | Privacy Policy
Copyright © 2007 Apple Inc. All rights reserved.