Example usage for org.lwjgl.opengl GL31 glDrawElementsInstanced

List of usage examples for org.lwjgl.opengl GL31 glDrawElementsInstanced

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL31 glDrawElementsInstanced.

Prototype

public static void glDrawElementsInstanced(@NativeType("GLenum") int mode,
        @NativeType("void const *") IntBuffer indices, @NativeType("GLsizei") int primcount) 

Source Link

Document

Draws multiple instances of a set of elements.

Usage

From source file:com.ardor3d.renderer.lwjgl.LwjglRenderer.java

License:Open Source License

@Override
public void drawElements(final IndexBufferData<?> indices, final int[] indexLengths,
        final IndexMode[] indexModes, final int primcount) {
    if (indices == null || indices.getBuffer() == null) {
        logger.severe("Missing indices for drawElements call without VBO");
        return;/*from   w  ww.j av a2s .c o  m*/
    }

    if (indexLengths == null) {
        final int glIndexMode = getGLIndexMode(indexModes[0]);

        indices.position(0);
        if (indices.getBuffer() instanceof IntBuffer) {
            if (primcount < 0) {
                GL11.glDrawElements(glIndexMode, (IntBuffer) indices.getBuffer());
            } else {
                GL31.glDrawElementsInstanced(glIndexMode, (IntBuffer) indices.getBuffer(), primcount);
            }
        } else if (indices.getBuffer() instanceof ShortBuffer) {
            if (primcount < 0) {
                GL11.glDrawElements(glIndexMode, (ShortBuffer) indices.getBuffer());
            } else {
                GL31.glDrawElementsInstanced(glIndexMode, (ShortBuffer) indices.getBuffer(), primcount);
            }

        } else if (indices.getBuffer() instanceof ByteBuffer) {
            if (primcount < 0) {
                GL11.glDrawElements(glIndexMode, (ByteBuffer) indices.getBuffer());
            } else {
                GL31.glDrawElementsInstanced(glIndexMode, (ByteBuffer) indices.getBuffer(), primcount);
            }
        }

        if (Constants.stats) {
            addStats(indexModes[0], indices.getBufferLimit());
        }
    } else {
        int offset = 0;
        int indexModeCounter = 0;
        for (int i = 0; i < indexLengths.length; i++) {
            final int count = indexLengths[i];

            final int glIndexMode = getGLIndexMode(indexModes[indexModeCounter]);

            indices.getBuffer().position(offset);
            indices.getBuffer().limit(offset + count);
            if (indices.getBuffer() instanceof IntBuffer) {
                if (primcount < 0) {
                    GL11.glDrawElements(glIndexMode, (IntBuffer) indices.getBuffer());
                } else {
                    GL31.glDrawElementsInstanced(glIndexMode, (IntBuffer) indices.getBuffer(), primcount);
                }

            } else if (indices.getBuffer() instanceof ShortBuffer) {
                if (primcount < 0) {
                    GL11.glDrawElements(glIndexMode, (ShortBuffer) indices.getBuffer());
                } else {
                    GL31.glDrawElementsInstanced(glIndexMode, (ShortBuffer) indices.getBuffer(), primcount);
                }

            } else if (indices.getBuffer() instanceof ByteBuffer) {
                if (primcount < 0) {
                    GL11.glDrawElements(glIndexMode, (ByteBuffer) indices.getBuffer());
                } else {
                    GL31.glDrawElementsInstanced(glIndexMode, (ByteBuffer) indices.getBuffer(), primcount);
                }
            }

            if (Constants.stats) {
                addStats(indexModes[indexModeCounter], count);
            }

            offset += count;

            if (indexModeCounter < indexModes.length - 1) {
                indexModeCounter++;
            }
        }
    }
}

From source file:tk.ivybits.engine.gl.GL.java

License:Open Source License

public static void glDrawElementsInstanced(int a, IntBuffer b, int c) {
    GL31.glDrawElementsInstanced(a, b, c);
}

From source file:tk.ivybits.engine.gl.GL.java

License:Open Source License

public static void glDrawElementsInstanced(int a, ShortBuffer b, int c) {
    GL31.glDrawElementsInstanced(a, b, c);
}

From source file:tk.ivybits.engine.gl.GL.java

License:Open Source License

public static void glDrawElementsInstanced(int a, ByteBuffer b, int c) {
    GL31.glDrawElementsInstanced(a, b, c);
}