BufferSizeException glLoadMatrix

Started by shaddow, February 23, 2012, 16:58:56

Previous topic - Next topic

shaddow

Hi there,

I recently switched from JOGL to LWJGL and I'm currently porting my engine.
Sadly I encountered the following problem:


QuoteCreating 16 buffer
16 capacity, 0 remaining, 16 position, .. flipping..
flipped
16 capacity, 16 remaining, 0 position
Exception in thread "main" java.lang.IllegalArgumentException: Number of remaining buffer elements is 4, must be at least 16. Because at most 16 elements can be returned, a buffer with at least 16 elements is required, regardless of actual returned element count
   at org.lwjgl.BufferChecks.throwBufferSizeException(BufferChecks.java:162)
   at org.lwjgl.BufferChecks.checkBufferSize(BufferChecks.java:189)
   at org.lwjgl.BufferChecks.checkBuffer(BufferChecks.java:244)
   at org.lwjgl.opengl.GL11.glGetInteger(GL11.java:1355)

Please note the debug statements, where i create a floatbuffer from my camera matrix. Nonetheless, this error keeps occuring. As far as google told me, this error was supposed to be resolved by flipping the floatbuffer, but i already did so:

   glLoadIdentity();

	   System.out.println("Creating "+(entity.getMatrix().get().length)+" buffer");
	   FloatBuffer floatBuffer = BufferUtils.createFloatBuffer(entity.getMatrix().get().length);
	   floatBuffer.put(entity.getMatrix().get());
       System.out.println(floatBuffer.capacity()+" capacity, "+ floatBuffer.remaining()+" remaining, "+ floatBuffer.position()+" position, .. flipping..");
	   floatBuffer.flip();
	   
       System.out.println("flipped");
       System.out.println(floatBuffer.capacity()+" capacity, "+ floatBuffer.remaining()+" remaining, "+ floatBuffer.position()+" position");

	   glLoadMatrix(floatBuffer);


Thank you for your help.


spasi

Quote from: shaddow on February 23, 2012, 16:58:56
QuoteCreating 16 buffer
16 capacity, 0 remaining, 16 position, .. flipping..
flipped
16 capacity, 16 remaining, 0 position
Exception in thread "main" java.lang.IllegalArgumentException: Number of remaining buffer elements is 4, must be at least 16. Because at most 16 elements can be returned, a buffer with at least 16 elements is required, regardless of actual returned element count
   at org.lwjgl.BufferChecks.throwBufferSizeException(BufferChecks.java:162)
   at org.lwjgl.BufferChecks.checkBufferSize(BufferChecks.java:189)
   at org.lwjgl.BufferChecks.checkBuffer(BufferChecks.java:244)
   at org.lwjgl.opengl.GL11.glGetInteger(GL11.java:1355)

See the last line, the error comes from glGetInteger, not glLoadMatrix.

shaddow

Damn it. I have been so focused on using the right buffer and checking not to use any jogl libs, that i totally overlooked the error resulting from a totally different part of the application..

However, i got my first demo apps running on lwjgl and so far i'm very pleased with the api ;)