Example usage for org.lwjgl.opengl GL15 glBindBuffer

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

Introduction

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

Prototype

public static void glBindBuffer(@NativeType("GLenum") int target, @NativeType("GLuint") int buffer) 

Source Link

Document

Binds a named buffer object.

Usage

From source file:org.jogamp.glg2d.impl.shader.GL2ES2ImagePipeline.java

License:Apache License

public void draw(FloatBuffer interleavedVertTexBuffer) {
    bufferData(interleavedVertTexBuffer);

    GL11.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, 4);

    GL20.glDisableVertexAttribArray(vertCoordLocation);
    GL20.glDisableVertexAttribArray(texCoordLocation);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
}

From source file:org.minetweak.rendering.ChunkMeshBuilder.java

License:Apache License

public static void generateChunkMesh(Chunk chunk, MeshType meshType) {
    if (DEBUG) {/*from   w w  w  .  j av a  2s .c om*/
        System.out.println("Building " + meshType.name() + " Mesh for " + chunk.toString() + "...");
    }

    /* Make sure there are no list edits anymore */
    chunk.performListChanges();

    ChunkMesh mesh = chunk.getMesh();
    mesh.destroy(meshType);

    /* Compute vertex count */
    int vertexCount = chunk.getVertexCount(meshType);
    if (DEBUG) {
        System.out.println("\tVertex Count = " + vertexCount);
    }
    /*
     * If there are no faces visible yet (because of generating busy), don't
     * create a buffer
     */
    if (vertexCount == 0) {
        return;
    }
    mesh.setVertexCount(meshType, vertexCount);

    /* Create a buffer */
    int vbo = BufferManager.getInstance().createBuffer();
    mesh.setVBO(meshType, vbo);

    /* Bind the buffer */
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo);

    /* Allocate size for the buffer */
    int size = vertexCount * STRIDE * FLOAT_SIZE;
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, size, GL15.GL_STATIC_DRAW);

    if (DEBUG) {
        System.out.println(
                "\tCreate VBO: " + vbo + " with size = " + size + " (ERROR: " + GL11.glGetError() + ")");
    }

    /* Get the native buffer to write to */
    ByteBuffer byteBuffer = GL15.glMapBuffer(GL15.GL_ARRAY_BUFFER, GL15.GL_WRITE_ONLY, size, null);
    if (byteBuffer == null) {
        System.out.println("\tCouldn't create a native VBO!: GL Error Code = " + GL11.glGetError());

        GL15.glUnmapBuffer(GL15.GL_ARRAY_BUFFER);
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

        mesh.destroy(meshType);
        Thread.dumpStack();
        mesh.setVBO(meshType, -1);
        mesh.setVertexCount(meshType, 0);

        return;
    }

    FloatBuffer vertexBuffer = byteBuffer.asFloatBuffer();

    /* Store all vertices in the buffer */
    USED_SIZE = 0;

    /* Local temporary variables, used to speed up */
    IntList blockList = chunk.getVisibleBlocks();
    int blockIndex = -1;
    byte blockType = 0;
    boolean special = false;
    Vec3i vec = new Vec3i();
    BlockType type;
    Block block = null;
    LightBuffer lightBuffer = chunk.getLightBuffer();
    byte faceMask = 0;

    /* Iterate over the blocks */
    for (int i = 0; i < blockList.size(); ++i) {
        blockIndex = blockList.get(i);
        blockType = chunk.getChunkData().getBlockType(blockIndex);
        if (blockType == 0) {
            continue;
        }
        special = chunk.getChunkData().isSpecial(blockIndex);
        type = _blockManager.getBlockType(blockType);

        if ((meshType == MeshType.OPAQUE && !type.isTranslucent() && type.hasNormalAABB())
                || (meshType == MeshType.TRANSLUCENT && (type.isTranslucent() || !type.hasNormalAABB()))) {

            ChunkData.indexToPosition(blockIndex, vec);

            /* Build the light buffer */

            vec.setX(vec.x() + chunk.getAbsoluteX());
            vec.setZ(vec.z() + chunk.getAbsoluteZ());

            lightBuffer.setReferencePoint(vec.x(), vec.y(), vec.z());

            if (special) {
                block = chunk.getChunkData().getSpecialBlock(blockIndex);
                if (block.isVisible()) {
                    block.storeInVBO(vertexBuffer, lightBuffer);
                }
            } else {
                if (type.isCrossed()) {
                    type.getCrossedBlockBrush().storeInVBO(vertexBuffer, vec.x() + 0.5f, vec.y() + 0.5f,
                            vec.z() + 0.5f, lightBuffer);
                } else {
                    faceMask = chunk.getChunkData().getFaceMask(blockIndex);
                    type.getDefaultBlockBrush().setFaceMask(faceMask);
                    type.getBrush().storeInVBO(vertexBuffer, vec.x() + 0.5f, vec.y() + 0.5f, vec.z() + 0.5f,
                            lightBuffer);
                }
            }
        }
    }

    /* Perform a check */
    if (USED_SIZE != STRIDE * FLOAT_SIZE * mesh.getVertexCount(meshType)) {
        System.out.println("\t[WARNING!]: Used size = " + USED_SIZE);
        System.out.println("\t[WARNING!]: Vertex count = " + USED_SIZE / STRIDE / FLOAT_SIZE);
        mesh.setVertexCount(meshType, USED_SIZE / STRIDE / FLOAT_SIZE);
    }

    byteBuffer.flip();

    GL15.glUnmapBuffer(GL15.GL_ARRAY_BUFFER);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

}

From source file:org.oscim.gdx.LwjglGL20.java

License:Apache License

public void bindBuffer(int target, int buffer) {
    GL15.glBindBuffer(target, buffer);
}

From source file:org.spout.engine.renderer.vertexbuffer.GLFloatBuffer.java

License:Open Source License

public void flush(FloatBuffer buffer) {
    if (vboId == -1)
        vboId = GL15.glGenBuffers();/*  w  ww  .j  a  v a 2  s  .  c om*/

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, usage);
}

From source file:org.spout.engine.renderer.vertexbuffer.GLFloatBuffer.java

License:Open Source License

public void bind() {
    if (vboId == -1)
        throw new IllegalStateException("Cannot bind a vertex buffer without data!");
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    GL20.glVertexAttribPointer(getLayout(), getElements(), GL11.GL_FLOAT, false, 0, 0);
}

From source file:org.spout.engine.renderer.vertexbuffer.SpoutFloatBuffer.java

License:Open Source License

public boolean flush(boolean force) {
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    SpoutRenderer.checkGLError();/*w  w w . j  ava  2  s  .c o  m*/

    //Re/Allocate if needed
    if (buffer.limit() > allocated) {
        allocated = buffer.limit();
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, allocated * FLOAT_SIZE, usage);
        SpoutRenderer.checkGLError();
    }

    //GL15.glBufferData(GL15.GL_ARRAY_BUFFER, 0, usage);
    //SpoutRenderer.checkGLError();
    int end;

    if (force) {
        end = buffer.capacity();
    } else {
        end = Math.min(current + STEP, buffer.capacity());
    }

    buffer.position(current);
    buffer.limit(end);

    GL15.glBufferSubData(GL15.GL_ARRAY_BUFFER, current * FLOAT_SIZE, buffer);
    SpoutRenderer.checkGLError();

    current = end;

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    SpoutRenderer.checkGLError();

    if (end == buffer.capacity()) {
        buffer = null;
        return true;
    }
    return false;
}

From source file:org.spout.engine.renderer.vertexbuffer.SpoutFloatBuffer.java

License:Open Source License

public void bind(boolean instanced) {
    if (vboId == -1) {
        throw new IllegalStateException("Cannot bind a vertex buffer without data!");
    }//from  www .  jav  a  2  s  . c o  m
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    SpoutRenderer.checkGLError();

    for (int i = 0; i < elements.length; i++) {
        GL20.glVertexAttribPointer(layout[i], elements[i], GL11.GL_FLOAT, false, stride, offset[i]);
        SpoutRenderer.checkGLError();

        if (instanced) {
            GL33.glVertexAttribDivisor(layout[i], 1);
            SpoutRenderer.checkGLError();
        }
    }
}

From source file:org.spout.engine.renderer.vertexbuffer.SpoutFloatBuffer.java

License:Open Source License

public void unbind() {
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    SpoutRenderer.checkGLError();
}

From source file:org.spout.engine.renderer.vertexbuffer.SpoutFloatBuffer.java

License:Open Source License

public void release() {
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    SpoutRenderer.checkGLError();/*w  w w .  j  a v  a  2  s . com*/

    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, 0, usage);
    SpoutRenderer.checkGLError();

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    SpoutRenderer.checkGLError();

    BUFFER_POOL.add(vboId);
    vboId = -1;
    allocated = 0;
}

From source file:org.spout.engine.renderer.vertexbuffer.VertexBufferImpl.java

License:Open Source License

public void flush(FloatBuffer buffer) {
    if (vboId == -1)
        vboId = GL15.glGenBuffers();//from  ww w  .  j  a  va 2  s .c  o m

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, usage);

}