JavaCV IplImage to LWJGL Texture

Posted by rendrag on Game Development See other posts from Game Development or by rendrag
Published on 2013-11-03T13:04:35Z Indexed on 2013/11/03 16:12 UTC
Read the original article Hit count: 548

Filed under:
|

As a side project I've been attempting to make a dynamic display (for example a screen within a game) that shows images from my webcam. I've been messing around with JavaCV and LWJGL for the past few months and have a basic understanding of how they both work. I found this after scouring google, but I get an error that the ByteBuffer isn't big enough.

IplImage img = cam.getFrame();
ByteBuffer buffer = img.asByteBuffer();
int textureID = glGenTextures(); //Generate texture ID
    glBindTexture(GL_TEXTURE_2D, textureID); //Bind texture ID
    //I don't know how much of the following is necessary
    //Setup wrap mode
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE);

    //Setup texture scaling filtering
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

    //Send texture data to OpenGL - this is the line that actually does stuff and that OpenGL has a problem with
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL12.GL_BGR, GL_UNSIGNED_BYTE, buffer);

That last line throws this-

Exception in thread "Thread-0" java.lang.IllegalArgumentException: Number of remaining buffer elements is 144, must be at least 921600. Because at most 921600 elements can be returned, a buffer with at least 921600 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:230)
  at org.lwjgl.opengl.GL11.glTexImage2D(GL11.java:2845)
  at tests.TextureTest.getTexture(TextureTest.java:78)
  at tests.TextureTest.update(TextureTest.java:43)
  at lib.game.AbstractGame$1.run(AbstractGame.java:52)
  at java.lang.Thread.run(Thread.java:679)

© Game Development or respective owner

Related posts about textures

Related posts about lwjgl