View Full Version : laying down depth

07-07-2007, 03:41 PM
a bit embarrassed to ask ( as i should know it ) but whats the best way to lay down depth info, from a depthtexture.

i could do it with glsl + gl_FragDepth
but is there a way to do it with the fixed function pipeline?

ta zed

07-08-2007, 05:03 AM
glReadPixels ?

Michael Gold
07-08-2007, 08:16 AM
If you have the depth info in host memory, you can copy it to the depth buffer via glDrawPixels(GL_DEPTH_COMPONENT). You must enable DEPTH_TEST and depth writes, set the DepthFunc appropriately and you may wish to disable color buffer writes.

If you have the depth info in a depth texture already, you may associate it with a FBO and copy it directly with BlitFramebufferEXT:


07-08-2007, 04:19 PM
cheers, framebuffer blit looks ideal unfortunatly i cant do it cause

11) Should blits be allowed between buffers of different bit sizes?
Resolved: Yes, for color buffers only. Attempting to blit
between depth or stencil buffers of different size generates
INVALID_OPERATION.heres what im doing
i have the main scene as a fullsized FBO (color + depth textures)

+ i have 2 other FBOs, glow buffer + particle system buffer.
both these are 1/4 sized (to conserve fillrate).
now to get these to display correctly i need to take into consideration the depth info when i draw into the FBOs.

07-08-2007, 05:11 PM
ok got it working with the following (just in case someone wants to do the same)


g_GL->draw_fullsize_quad_rectangle( g_Program.options.renderbuffer_width, g_Program.options.renderbuffer_height );

// fragment shader //
#extension GL_ARB_texture_rectangle : enable

uniform sampler2DRect depthtex;
varying vec2 texcoord;

void main( void )
gl_FragDepth = texture2DRect( depthtex, texcoord );

another thing since im writing the depth to the whole screen, is it worthwhile turning off the clear( GL_DEPTH ) ?

07-23-2007, 01:03 PM
Yes, make sure your depth test is set to GL_ALWAYS when drawing the depth values, that compare_mode is just the depth shadow comparrison (fragment z vs. texture R), you still need the depth fragments to wuin when tested against the framebuffer and so that clear may be saving you for now.