Example usage for org.lwjgl.opengl GL15 glBufferData

List of usage examples for org.lwjgl.opengl GL15 glBufferData

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL15 glBufferData.

Prototype

public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") double[] data,
        @NativeType("GLenum") int usage) 

Source Link

Document

Array version of: #glBufferData BufferData

Usage

From source file:com.samrj.devil.gl.VertexStream.java

License:Open Source License

/**
 * Uploads this vertex data to the GPU and clears the stream, allowing new
 * data to be emitted./* w  ww  . j  a  v a2  s  . c om*/
 */
public void upload() {
    ensureState(State.READY);

    //Allocate new stores, orphaning the old ones to allow for asynchronous drawing.
    int prevBinding = GL11.glGetInteger(GL15.GL_ARRAY_BUFFER_BINDING);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vboSize, GL15.GL_STREAM_DRAW);
    GL15.nglBufferSubData(GL15.GL_ARRAY_BUFFER, 0, bufferedVerts * vertexSize(), vertexBlock.address);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, prevBinding);

    if (maxIndices > 0) {
        prevBinding = GL11.glGetInteger(GL15.GL_ELEMENT_ARRAY_BUFFER_BINDING);
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, ibo);
        GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, eboSize, GL15.GL_STREAM_DRAW);
        GL15.nglBufferSubData(GL15.GL_ELEMENT_ARRAY_BUFFER, 0, bufferedInds * 4, indexBlock.address);
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, prevBinding);
    }

    uploadedVerts = bufferedVerts;
    uploadedInds = bufferedInds;

    clear();
}

From source file:com.timvisee.voxeltex.module.mesh.Mesh.java

License:Open Source License

/**
 * Build and buffer the mesh on the graphics card.
 *//*from w w  w  .java2 s. co  m*/
public void bufferMesh() {
    // Create a flipped float buffer for the vertexes
    this.vertexBuffer = BufferUtils
            .createFloatBuffer(this.raw.getVertexCount() * this.raw.getVertexAxisCount());
    this.vertexBuffer.put(this.raw.getVertexes());
    this.vertexBuffer.flip();

    // Create a VBO handle for the vertexes and bind the buffer
    vboVertexHandle = GL15.glGenBuffers();
    glBindBuffer(GL_ARRAY_BUFFER, this.vboVertexHandle);
    GL15.glBufferData(GL_ARRAY_BUFFER, this.vertexBuffer, GL15.GL_STATIC_DRAW);
    glBindBuffer(GL_ARRAY_BUFFER, 0);

    // Buffer the normal data if the mesh has any configured
    if (this.raw.hasNormalData()) {
        // Create a flipped float buffer for the normal coordinates
        this.normalBuffer = BufferUtils
                .createFloatBuffer(this.raw.getNormalCount() * this.raw.getNormalAxisCount());
        this.normalBuffer.put(this.raw.getNormals());
        this.normalBuffer.flip();

        // Create a VBO handle for the normal coordinates and bind the buffer
        vboNormalHandle = GL15.glGenBuffers();
        glBindBuffer(GL_ARRAY_BUFFER, this.vboNormalHandle);
        GL15.glBufferData(GL_ARRAY_BUFFER, this.normalBuffer, GL15.GL_STATIC_DRAW);
        glBindBuffer(GL_ARRAY_BUFFER, 0);
    }

    // Buffer the texture data if the mesh has any configured
    if (this.raw.hasTextureData()) {
        // Create a flipped float buffer for the texture coordinates
        this.textureBuffer = BufferUtils
                .createFloatBuffer(this.raw.getVertexCount() * this.raw.getTextureAxisCount());
        this.textureBuffer.put(this.raw.getTextures());
        this.textureBuffer.flip();

        // Create a VBO handle for the texture coordinates and bind the buffer
        vboTextureHandle = GL15.glGenBuffers();
        glBindBuffer(GL_ARRAY_BUFFER, this.vboTextureHandle);
        GL15.glBufferData(GL_ARRAY_BUFFER, this.textureBuffer, GL15.GL_STATIC_DRAW);
        glBindBuffer(GL_ARRAY_BUFFER, 0);
    }

    // Set the number of vertexes and normals
    this.vertexCount = this.raw.getVertexCount();
    this.normalCount = this.raw.getNormalCount();
}

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

License:Open Source License

public void create(int vaoId) {
    build();//ww  w .  j a  v  a2s.c  om

    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();/*from  w  w w .  ja  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.InstanceBuffer.java

License:Open Source License

public InstanceBuffer(int divisor, int count, int attribId, int[] elemCount) {
    this.divisor = divisor;
    this.attribId = attribId;
    this.elemCount = elemCount;
    stride = 0;/*from   w  w  w .  ja  v  a  2s  .c  om*/
    for (int i = 0; i < elemCount.length; i++) {
        stride += 4 * elemCount[i];
    }
    instanceBuffer = BufferUtils.createByteBuffer(count * stride).asFloatBuffer();

    iboId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, iboId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, count * stride, GL15.GL_STATIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    Client.checkError();
}

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   w  w w.j  a  v  a2s.com
    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:cuchaz.jfxgl.prism.JFXGLContext.java

License:Open Source License

@Override
public int createIndexBuffer16(short data[]) {
    int id = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, id);
    GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, data, GL15.GL_STATIC_DRAW);
    return id;/*from  ww w.  ja  va2  s  .  co  m*/
}

From source file:cuchaz.jfxgl.prism.TexturedQuad.java

License:Open Source License

public TexturedQuad(int x, int y, int w, int h, int texId, Shader shader) {

    this.shader = shader;
    this.texId = texId;

    // make the vertex array
    vaoId = GL30.glGenVertexArrays();/*w  w w .  j  a  v a 2s.  c  o  m*/
    GL30.glBindVertexArray(vaoId);

    try (MemoryStack m = MemoryStack.stackPush()) {

        // make the indices
        ByteBuffer indexBuf = m.bytes(new byte[] { 0, 1, 2, 0, 2, 3 });
        iboId = GL15.glGenBuffers();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, iboId);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, indexBuf, GL15.GL_STATIC_DRAW);
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, iboId);

        // make the vertices
        FloatBuffer vertexBuf = m.floats(
                new float[] { x + 0, y + 0, 0, 0, x + w, y + 0, 1, 0, x + w, y + h, 1, 1, x + 0, y + h, 0, 1 });
        vboId = GL15.glGenBuffers();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertexBuf, GL15.GL_STATIC_DRAW);
        GL20.glEnableVertexAttribArray(0);
        GL20.glVertexAttribPointer(0, 2, GL11.GL_FLOAT, false, Float.BYTES * 4, 0);
        GL20.glEnableVertexAttribArray(1);
        GL20.glVertexAttribPointer(1, 2, GL11.GL_FLOAT, false, Float.BYTES * 4, Float.BYTES * 2);
    }

    // unbind things
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    GL30.glBindVertexArray(0);
}

From source file:Data.Building.java

License:Apache License

@Override
public void setup() {
    // OpenGL expects vertices to be defined counter clockwise by default

    triangulize(geometry);/*from  w ww.  j ava  2  s  . c  o m*/

    // Sending data to OpenGL requires the usage of (flipped) byte buffers
    FloatBuffer verticesBuffer = BufferUtils.createFloatBuffer(vertices.length);
    verticesBuffer.put(vertices);
    verticesBuffer.flip();

    vertexCount = vertices.length;

    // Create a new Vertex Array Object in memory and select it (bind)
    // A VAO can have up to 16 attributes (VBO's) assigned to it by default
    vaoId = GL30.glGenVertexArrays();
    GL30.glBindVertexArray(vaoId);

    // Create a new Vertex Buffer Object in memory and select it (bind)
    // A VBO is a collection of Vectors which in this case resemble the location of each vertex.
    vboId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, verticesBuffer, GL15.GL_STATIC_DRAW);
    // Put the VBO in the attributes list at index 0
    GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0);
    // Deselect (bind to 0) the VBO
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

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

    Util.exitOnGLError("Error in setupQuad");
}

From source file:dataAccess.lwjgl.VAO_Loader.java

/**
 * Stores data in an attribute list of a VAO.
 *
 * @param vaoID The id of the VAO to which data will be added.
 * @param attributeNumber The number of the attribute list in which the data
 * will be stored.//from www.  j a v a  2 s.  com
 * @param data The data that will be stored in the attribute list.
 */
private static void storeDataInAttributeList(int vaoID, int attributeNumber, int coordinateSize, float[] data) {
    // bind VAO so that it can be used.
    bindVAO(vaoID);

    // Create new VBO.
    int vboID = GL15.glGenBuffers();

    // Adds VBO to list so that it can be cleared when needed.
    vbos.add(vboID);

    // VBO has to be bound aswel.
    bindArrayBuffer(vboID);

    // Converts float array to an instance of FloatBuffer, which can
    // be stored in a VBO.
    FloatBuffer buffer = Convert.toReadableFloatBuffer(data);

    // Puts the buffer into the VBO, and GL_STATIC_DRAW tells it that it 
    // won't ever be modified.
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, GL15.GL_STATIC_DRAW);

    // Specifies that this is for the Vertex Array.
    GL20.glVertexAttribPointer(attributeNumber, coordinateSize, GL11.GL_FLOAT, false, 0, 0);

    // Unbind the VBO.
    unbindArrayBuffer();

    // unbind VAO so that another may be bound.
    unbindVAO();
}