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.ajgl.graphics.VertexBufferedObject.java

License:Open Source License

/**
 * Binds the local texture vertices. You need to enable 
 * {@link org.lwjgl.opengl.GL11#GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY} before 
 * you can use this method./*from   w  w  w  . j a  va 2 s  .c o  m*/
 * @param textureHandler - The vertex buffered object texture handler
 * @param texturePointData - The number of points per texture data (i.e. 1-1D, 2-2D, 3-3D)
 * @param stride - The stride offset; used for interleaving data
 * @param offSet - initial offset for the data
 * @param dataType - The OpenGL dataType
 */
public static void texturePointer(int textureHandler, int texturePointData, int stride, int offSet,
        @GLDataType int dataType) {
    // bind color data
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, textureHandler);
    GL11.glTexCoordPointer(texturePointData, dataType, stride, offSet);
}

From source file:org.ajgl.graphics.VertexBufferedObject.java

License:Open Source License

/**
 * Draws a vertex buffered object; Uses redundant vertices. You need to enable 
 * {@link org.lwjgl.opengl.GL11#GL_VERTEX_ARRAY GL_VERTEX_ARRAY} before 
 * you can use this method.//from   w w w  .  jav a  2  s .c om
 * @param vertexHandler - The vertex buffered object vertex handler
 * @param vertexPointData - The number of points per vertex data (i.e. 1-1D, 2-2D, 3-3D)
 * @param vertexNumber - The number of vertices
 * @param first - The start point of the array
 * @param stride - The stride offset; used for interleaving data
 * @param offSet - initial offset for the data
 * @param dataType - The OpenGL dataType
 * @param beginMode - The OpenGL begin mode
 */
public static void drawVboArrays(int vertexHandler, int vertexPointData, int vertexNumber, int first,
        int stride, int offSet, @GLDataType int dataType, @BeginMode int beginMode) {
    // bind vertex data
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertexHandler);
    GL11.glVertexPointer(vertexPointData, dataType, stride, offSet);
    // Draw vertex buffer object
    GL11.glDrawArrays(beginMode, first, vertexNumber);
}

From source file:org.ajgl.graphics.VertexBufferedObject.java

License:Open Source License

/**
 * Draws a vertex buffered object; Uses redundant vertices. You need to enable 
 * {@link org.lwjgl.opengl.GL11#GL_VERTEX_ARRAY GL_VERTEX_ARRAY} before 
 * you can use this method./*ww  w  .j  a  va  2 s. co  m*/
 * @param vertexHandler - The vertex buffered object vertex handler
 * @param vertexPointData - The number of points per vertex data (i.e. 1-1D, 2-2D, 3-3D)
 * @param vertexNumber - The number of vertices
 * @param stride - The stride offset; used for interleaving data
 * @param offSet - initial offset for the data
 * @param dataType - The OpenGL dataType
 * @param beginMode - The OpenGL begin mode
 */
public static void drawVboElements(int vertexHandler, int vertexPointData, int vertexNumber, int stride,
        int offSet, @GLDataType int dataType, @BeginMode int beginMode) {
    // bind vertex data
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertexHandler);
    GL11.glVertexPointer(vertexPointData, dataType, stride, offSet);
    // Draw vertex buffer object
    GL11.glDrawElements(beginMode, vertexNumber, dataType, offSet);
}

From source file:org.bonsaimind.badgersvoyage.opengl.RenderObject.java

License:Open Source License

protected void createOpenGL(int programId) {
    modelMatrix = new Matrix4f();
    modelMatrixLocation = GL20.glGetUniformLocation(programId, "modelMatrix");
    modelMatrixBuffer = BufferUtils.createFloatBuffer(16);

    verticesCount = vertices.length / 3;

    verticesBuffer = BufferUtils.createFloatBuffer(vertices.length);
    verticesBuffer.put(vertices);/*from   w  w  w .  j a  v  a  2  s  .  c o  m*/
    verticesBuffer.flip();

    vaoId = GL30.glGenVertexArrays();
    GL30.glBindVertexArray(vaoId);

    vboId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, verticesBuffer, GL15.GL_STATIC_DRAW);
    GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    GL30.glBindVertexArray(0);
}

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

License:Apache License

public static void generateChunkMesh(Chunk chunk, MeshType meshType) {
    if (DEBUG)//from   w  w w  .j  a  va  2s  . co m
        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.jogamp.glg2d.impl.shader.AnyModePipeline.java

License:Apache License

public void bindBuffer() {
    GL20.glEnableVertexAttribArray(vertCoordLocation);
    vertCoordBuffer = ensureIsGLBuffer(vertCoordBuffer);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertCoordBuffer);
    GL20.glVertexAttribPointer(vertCoordLocation, 2, GL11.GL_FLOAT, false, 0, 0);
}

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

License:Apache License

public void unbindBuffer() {
    GL20.glDisableVertexAttribArray(vertCoordLocation);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
}

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

License:Apache License

protected void bindBuffer(FloatBuffer vertexBuffer) {
    GL20.glEnableVertexAttribArray(vertCoordLocation);
    GL20.glEnableVertexAttribArray(vertBeforeLocation);
    GL20.glEnableVertexAttribArray(vertAfterLocation);

    if (GL15.glIsBuffer(vertCoordBuffer)) {
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertCoordBuffer);
        GL15.glBufferSubData(GL15.GL_ARRAY_BUFFER, 0, vertexBuffer);
    } else {//  ww  w.j a  v  a 2  s  .co  m
        vertCoordBuffer = GLG2DUtils.genBufferId();

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertCoordBuffer);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertexBuffer, GL15.GL_STREAM_DRAW);
    }

    GL20.glVertexAttribPointer(vertCoordLocation, 2, GL11.GL_FLOAT, false, 0, 2 * (Float.SIZE / Byte.SIZE));
    GL20.glVertexAttribPointer(vertBeforeLocation, 2, GL11.GL_FLOAT, false, 0, 0);
    GL20.glVertexAttribPointer(vertAfterLocation, 2, GL11.GL_FLOAT, false, 0, 4 * (Float.SIZE / Byte.SIZE));
}

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

License:Apache License

public void draw(FloatBuffer vertexBuffer, boolean close) {
    int pos = vertexBuffer.position();
    int lim = vertexBuffer.limit();
    int numPts = (lim - pos) / 2;

    if (numPts * 2 + 6 > vBuffer.capacity()) {
        vBuffer = BufferUtils.createFloatBuffer(numPts * 2 + 4);
    }/*from  w  w w .  ja va 2 s  .co  m*/

    vBuffer.clear();

    if (close) {
        vBuffer.put(vertexBuffer.get(lim - 2));
        vBuffer.put(vertexBuffer.get(lim - 1));
        vBuffer.put(vertexBuffer);
        vBuffer.put(vertexBuffer.get(pos));
        vBuffer.put(vertexBuffer.get(pos + 1));
        vBuffer.put(vertexBuffer.get(pos + 2));
        vBuffer.put(vertexBuffer.get(pos + 3));
    } else {
        vBuffer.put(0);
        vBuffer.put(0);
        vBuffer.put(vertexBuffer);
        vBuffer.put(0);
        vBuffer.put(0);
    }

    vBuffer.flip();

    bindBuffer(vBuffer);

    if (close) {
        setDrawEnd(DRAW_END_NONE);
        GL11.glDrawArrays(GL11.GL_LINES, 0, numPts + 1);
        GL11.glDrawArrays(GL11.GL_LINES, 1, numPts);
    } else if (numPts == 2) {
        setDrawEnd(DRAW_END_BOTH);
        GL11.glDrawArrays(GL11.GL_LINES, 0, 2);
    } else {
        setDrawEnd(DRAW_END_NONE);
        GL11.glDrawArrays(GL11.GL_LINES, 1, numPts - 2);
        GL11.glDrawArrays(GL11.GL_LINES, 2, numPts - 3);

        setDrawEnd(DRAW_END_FIRST);
        GL11.glDrawArrays(GL11.GL_LINES, 0, 2);

        setDrawEnd(DRAW_END_LAST);
        GL11.glDrawArrays(GL11.GL_LINES, numPts - 2, 2);
    }

    GL20.glDisableVertexAttribArray(vertCoordLocation);
    GL20.glDisableVertexAttribArray(vertBeforeLocation);
    GL20.glDisableVertexAttribArray(vertAfterLocation);

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

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

License:Apache License

protected void bufferData(FloatBuffer buffer) {
    vertexBufferId = ensureIsGLBuffer(vertexBufferId);

    GL20.glEnableVertexAttribArray(vertCoordLocation);
    GL20.glEnableVertexAttribArray(texCoordLocation);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertexBufferId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, GL15.GL_STATIC_DRAW);

    GL20.glVertexAttribPointer(vertCoordLocation, 2, GL11.GL_FLOAT, false, 4 * (Float.SIZE / Byte.SIZE), 0);
    GL20.glVertexAttribPointer(texCoordLocation, 2, GL11.GL_FLOAT, false, 4 * (Float.SIZE / Byte.SIZE),
            2 * (Float.SIZE / Byte.SIZE));
}