java - glDrawBuffers should have flipped IntBuffer? -
i have following code:
intbuffer drawbuffers = utils.createintbuffer(2); int bfs[] = {gl30.gl_color_attachment0, gl30.gl_color_attachment1}; for(int = 0; < 2; i++) drawbuffers.put(bfs[i]); drawbuffers.flip(); gl20.gldrawbuffers(drawbuffers);
if flip intbuffer
int status = gl30.glcheckframebufferstatus(gl30.gl_framebuffer);
don't equal gl_framebuffer_complete
, if don't flip status right, black texture instead of desired texture, looked throught code on , on 2 days now, best bet part of code somehow wrong, rest seems ok.
should intbuffer
flipped before using in gldrawbuffers(intbuffer)
?
yes, buffers should flipped before being passed lwjgl.
the underlying gl api expects array functions take java buffer. size of array parameter in gl's c language bindings, hidden in java because lwjgl calculates difference between current position , end position.
unless flip java.nio.buffer
, sets "current" position beginning of buffer, current position going end position after calling put (...)
. thus, lwjgl passes array of size 0 c-based opengl api sits on top of. if call gldrawbuffers (...)
size 0, sets gl_none
, going produce behavior described.
Comments
Post a Comment