Example usage for org.lwjgl.opengl GL30 glBindVertexArray

List of usage examples for org.lwjgl.opengl GL30 glBindVertexArray

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL30 glBindVertexArray.

Prototype

public static void glBindVertexArray(@NativeType("GLuint") int array) 

Source Link

Document

Binds a vertex array object

Usage

From source file:com.voxelplugineering.voxelsniper.render.buffer.BufferManager.java

License:Open Source License

public void destroy() {
    GL30.glBindVertexArray(vaoId);
    GL20.glDisableVertexAttribArray(0);//from   w  ww.  j av  a  2  s  . c o m
    GL20.glDisableVertexAttribArray(1);
    GL20.glDisableVertexAttribArray(2);

    for (BufferSection b : this.sections) {
        b.destroy();
    }

    GL30.glBindVertexArray(0);
    GL30.glDeleteVertexArrays(vaoId);
}

From source file:com.voxelplugineering.voxelsniper.render.buffer.BufferManager.java

License:Open Source License

public void renderSections() {
    GL30.glBindVertexArray(vaoId);
    GL20.glEnableVertexAttribArray(0);/* www  .  ja  v a  2 s  .  c  om*/
    GL20.glEnableVertexAttribArray(1);
    GL20.glEnableVertexAttribArray(2);

    for (BufferSection b : this.sections) {
        b.draw();
    }

    GL20.glDisableVertexAttribArray(0);
    GL20.glDisableVertexAttribArray(1);
    GL20.glDisableVertexAttribArray(2);
    GL30.glBindVertexArray(0);
}

From source file:com.voxelplugineering.voxelsniper.render.buffer.BufferSection.java

License:Open Source License

public void create(int vaoId) {
    build();//from w  w  w .  ja  v  a 2 s  . c  o m

    GL30.glBindVertexArray(vaoId);

    // Create a new Vertex Buffer Object in memory and select it (bind)
    vboId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, verticesFloatBuffer, GL15.GL_STREAM_DRAW);

    // Put the position coordinates in attribute list 0
    GL20.glVertexAttribPointer(0, RenderingConstants.POSITION_ELEMENT_COUNT, GL11.GL_FLOAT, false,
            RenderingConstants.STRIDE, RenderingConstants.POSITION_BYTE_OFFSET);
    // Put the color components in attribute list 1
    GL20.glVertexAttribPointer(1, RenderingConstants.COLOUR_ELEMENT_COUNT, GL11.GL_FLOAT, false,
            RenderingConstants.STRIDE, RenderingConstants.COLOUR_BYTE_OFFSET);
    // Put the texture coordinates in attribute list 2
    GL20.glVertexAttribPointer(2, RenderingConstants.TEXTURE_ELEMENT_COUNT, GL11.GL_FLOAT, false,
            RenderingConstants.STRIDE, RenderingConstants.TEXTURE_BYTE_OFFSET);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    // Deselect (bind to 0) the VAO
    GL30.glBindVertexArray(0);

    // Create a new VBO for the indices and select it (bind) - INDICES
    vboiId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboiId);
    GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, indicesBuffer, GL15.GL_STATIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
}

From source file:com.xrbpowered.gl.res.shaders.FeedbackVertices.java

License:Open Source License

public FeedbackVertices(Shader transformShader, Shader renderShader, int count, boolean createIndices) {
    this.transformShader = transformShader;
    this.renderShader = renderShader;
    this.countElements = count;
    vertexBuffer = BufferUtils.createByteBuffer(count * transformShader.info.getStride()).asFloatBuffer();
    feedbackBuffer = BufferUtils.createByteBuffer(count * renderShader.info.getStride()).asFloatBuffer();

    vaoId = GL30.glGenVertexArrays();/*  www.j a  v  a  2 s  .c o  m*/
    GL30.glBindVertexArray(vaoId);

    vboId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, count * transformShader.info.getStride(), GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    vboFeedbackId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboFeedbackId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, count * renderShader.info.getStride(), GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    GL30.glBindVertexArray(0);

    if (createIndices) {
        indexBuffer = BufferUtils.createByteBuffer(count * 4).asIntBuffer();

        vboiId = GL15.glGenBuffers();
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboiId);
        GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, count * 4, GL15.GL_DYNAMIC_DRAW);
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
    }
    Client.checkError();
}

From source file:com.xrbpowered.gl.res.shaders.FeedbackVertices.java

License:Open Source License

public void transform() {
    GL30.glBindVertexArray(vaoId);
    GL11.glEnable(GL30.GL_RASTERIZER_DISCARD);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);

    transformShader.use();/*from  w w w.  j  a v  a 2 s  . c om*/
    transformShader.info.initAttribPointers();
    transformShader.info.enableAttribs();

    GL30.glBindBufferBase(GL30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, vboFeedbackId);
    GL30.glBeginTransformFeedback(GL11.GL_POINTS);
    GL11.glDrawArrays(GL11.GL_POINTS, 0, countElements);
    GL30.glEndTransformFeedback();

    transformShader.info.disableAttribs();
    transformShader.unuse();
    GL11.glDisable(GL30.GL_RASTERIZER_DISCARD);
}

From source file:com.xrbpowered.gl.res.shaders.FeedbackVertices.java

License:Open Source License

public void draw() {
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboFeedbackId);
    renderShader.use();/*from w  w w  . j a va  2 s.  co  m*/
    renderShader.info.enableAttribs();
    renderShader.info.initAttribPointers();

    if (vboiId != GL11.GL_INVALID_VALUE) {
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboiId);
        GL11.glDrawElements(GL11.GL_POINTS, countElements, GL11.GL_UNSIGNED_INT, 0);
    } else {
        GL11.glDrawArrays(GL11.GL_POINTS, 0, countElements);
    }

    renderShader.info.disableAttribs();
    renderShader.unuse();
    GL30.glBindVertexArray(0);
}

From source file:com.xrbpowered.gl.res.StaticMesh.java

License:Open Source License

private void create(VertexInfo info, FloatBuffer vertexBuffer, ShortBuffer indexBuffer, int countElements,
        int verticesPerElement, boolean dynamic) {
    this.countElements = countElements;
    this.drawMode = getDrawMode(verticesPerElement);
    int usage = dynamic ? GL15.GL_DYNAMIC_DRAW : GL15.GL_STATIC_DRAW;

    vaoId = GL30.glGenVertexArrays();//from ww w . ja va2  s.co  m
    GL30.glBindVertexArray(vaoId);

    vboId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertexBuffer, usage);

    this.countAttribs = info.getAttributeCount();
    info.initAttribPointers();

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    GL30.glBindVertexArray(0);

    if (indexBuffer != null) {
        vboiId = GL15.glGenBuffers();
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboiId);
        GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, indexBuffer, usage);
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
    }
}

From source file:com.xrbpowered.gl.res.StaticMesh.java

License:Open Source License

public void bindVAO() {
    GL30.glBindVertexArray(vaoId);
}

From source file:com.xrbpowered.gl.res.StaticMesh.java

License:Open Source License

public void unbindVAO() {
    GL30.glBindVertexArray(0);
}

From source file:com.xrbpowered.gl.res.StaticMesh.java

License:Open Source License

public void enableDraw(int[] attribMask) {
    GL30.glBindVertexArray(vaoId);
    if (attribMask == null) {
        for (int i = 0; i < countAttribs; i++)
            GL20.glEnableVertexAttribArray(i);
    } else {//w  w w  .j ava2  s  .com
        for (int i = 0; i < attribMask.length; i++)
            GL20.glEnableVertexAttribArray(attribMask[i]);
    }
}