Example usage for org.lwjgl.opengl ARBDrawInstanced glDrawArraysInstancedARB

List of usage examples for org.lwjgl.opengl ARBDrawInstanced glDrawArraysInstancedARB

Introduction

In this page you can find the example usage for org.lwjgl.opengl ARBDrawInstanced glDrawArraysInstancedARB.

Prototype

public static native void glDrawArraysInstancedARB(@NativeType("GLenum") int mode,
        @NativeType("GLint") int first, @NativeType("GLsizei") int count, @NativeType("GLsizei") int primcount);

Source Link

Document

Draw multiple instances of a range of elements.

Usage

From source file:org.lwjgl.demo.opengl.instancing.GrassDemo.java

License:Open Source License

private void render() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    // Render ground
    glUseProgram(groundProgram);//from  w  w w. ja va2 s  .  c o m
    glUniformMatrix4fv(groundVpMatrixUniform, false, vpMatrix.get(mat4Buffer));
    ARBVertexArrayObject.glBindVertexArray(groundVao);
    glDrawArrays(GL_TRIANGLES, 0, 6);
    ARBVertexArrayObject.glBindVertexArray(0);
    // Render grass patches
    glUseProgram(grassProgram);
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, grassTex0);
    glActiveTexture(GL_TEXTURE1);
    glBindTexture(GL_TEXTURE_2D, grassTex1);
    glActiveTexture(GL_TEXTURE2);
    glBindTexture(GL_TEXTURE_2D, grassTex2);
    glActiveTexture(GL_TEXTURE3);
    glBindTexture(GL_TEXTURE_2D, grassTex3);
    glUniformMatrix4fv(grassVpMatrixUniform, false, vpMatrix.get(mat4Buffer));
    ARBVertexArrayObject.glBindVertexArray(grassVao);
    ARBDrawInstanced.glDrawArraysInstancedARB(GL_TRIANGLES, 0, 6 * NUM_FACES_PER_PATCH, NUM_GRASS_PATCHES);
    ARBVertexArrayObject.glBindVertexArray(0);
    glUseProgram(0);
    glActiveTexture(GL_TEXTURE0);
}