opengl es 2.0 - Getting Black Color from Depth Buffer in Open GL ES 2.0 -
i'm working on simple 3d application opengl es 2.0, ios.
what want wanna depth values of scene in depth buffer in fragment shader.
so, created depth buffer 2d texture
gluint texture; glgentextures(1, &texture); glbindtexture(gl_texture_2d, texture); glteximage2d(gl_texture_2d, 0, gl_depth_component, size.x, size.y, 0, gl_depth_component, gl_unsigned_int, null); self.dimension = ivvec3i_make(size.x, size.y, 0); self.bufferobjid = texture;
and attached frame buffer depth attachment.
glframebuffertexture2d(gl_framebuffer, gl_depth_attachment, gl_texture_2d, prd.bufferobjid,0);
when render scene, depth buffer working correctly(depth test , depth write working perfectly).
but, when assign depth buffer sampler in shader , render depth buffer screen using full screen quad plane, it's black. and, shader doesn't have problem because when assign normal texture sampler, renders texture correctly.
this fragment shader.
uniform sampler2d depthbuffer; void main() { highp vec2 tex_coord = vec2(gl_fragcoord.x/1024.0,gl_fragcoord.y/768.0); tex_coord.y = 1.0-tex_coord.y; gl_fragcolor = texture2d(depthbuffer, tex_coord); }
when inspected depth buffer capturing opengl es frame, debugger shows depth buffer in white (which correct because depth values pretty close 1.0).
so, problem here?
sugu lee,
i've run exact same problem, turns out texture filtering problem. try gl_nearest shown below.
gles20.glteximage2d(gles20.gl_texture_2d, 0, gles30.gl_depth_component32f, texwidth, texheight, 0, gles20.gl_depth_component, gles20.gl_float, null); gles30.gltexparameteri(gles20.gl_texture_2d, gles30.gl_texture_compare_mode, gles20.gl_none); gles20.gltexparameteri(gles20.gl_texture_2d, gles20.gl_texture_mag_filter, gles20.gl_nearest); gles20.gltexparameteri(gles20.gl_texture_2d, gles20.gl_texture_min_filter, gles20.gl_nearest);
note: i'm using gles 3.0 fix works 2.0 also. device: htc m8 t-mo android 5.0 lollipop
Comments
Post a Comment