html5 - Why does this WebGL framebuffer usage throw FRAMEBUFFER_UNSUPPORTED? -
i'm trying create webgl pick buffer;
can see i'm doing wrong here?
i'm getting "incomplete framebuffer: framebuffer_unsupported" on mozilla/5.0 (x11; linux x86_64; rv:2.0b3pre) gecko/20100724 minefield/4.0b3pre , chrome 5.0.375.99. must obvious , staring right @ me cant see it. it's apparently valid, has texture..but "unsupported"?
var gl = canvas.context; var framebuf = gl.createframebuffer(); var renderbuf = gl.createrenderbuffer(); var picktexture = gl.createtexture(); gl.bindtexture(gl.texture_2d, picktexture); var width = 400; var height = 400; try { gl.teximage2d(gl.texture_2d, 0, gl.rgb, width, height, 0, gl.rgb, gl.unsigned_byte, null); } catch (e) { // null rejected var tex = new webglunsignedbytearray(width * height * 3); gl.teximage2d(gl.texture_2d, 0, gl.rgb, width, height, 0, gl.rgb, gl.unsigned_byte, tex); } gl.bindframebuffer(gl.framebuffer, framebuf); gl.bindrenderbuffer(gl.renderbuffer, renderbuf); gl.renderbufferstorage(gl.renderbuffer, gl.depth_component16, width, height); gl.bindrenderbuffer(gl.renderbuffer, null); gl.framebuffertexture2d(gl.framebuffer, gl.color_attachment0, gl.texture_2d, picktexture, 0); gl.framebufferrenderbuffer(gl.framebuffer, gl.depth_attachment, gl.renderbuffer, renderbuf); gl.bindframebuffer(gl.framebuffer, null); gl.bindframebuffer(gl.framebuffer, framebuf); if (!gl.isframebuffer(framebuf)) { throw("invalid framebuffer"); } var status = gl.checkframebufferstatus(gl.framebuffer); switch (status) { case gl.framebuffer_complete: break; case gl.framebuffer_incomplete_attachment: throw("incomplete framebuffer: framebuffer_incomplete_attachment"); break; case gl.framebuffer_incomplete_missing_attachment: throw("incomplete framebuffer: framebuffer_incomplete_missing_attachment"); break; case gl.framebuffer_incomplete_dimensions: throw("incomplete framebuffer: framebuffer_incomplete_dimensions"); break; case gl.framebuffer_unsupported: throw("incomplete framebuffer: framebuffer_unsupported"); break; default: throw("incomplete framebuffer: " + status); }
solution provided kenneth russell - fixed specifying these settings texture:
gl.texparameteri(gl.texture_2d, gl.texture_mag_filter, gl.nearest); gl.texparameteri(gl.texture_2d, gl.texture_min_filter, gl.nearest); gl.texparameteri(gl.texture_2d, gl.texture_wrap_s, gl.clamp_to_edge); gl.texparameteri(gl.texture_2d, gl.texture_wrap_t, gl.clamp_to_edge);
Comments
Post a Comment