Example usage for org.lwjgl.opengl GL15 glGenBuffers

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

Introduction

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

Prototype

@NativeType("void")
public static int glGenBuffers() 

Source Link

Document

Generates buffer object names.

Usage

From source file:uk.co.hexeption.darkforge.utils.render.GLUtils.java

License:Open Source License

public static int genVBO() {

    int id = GL15.glGenBuffers();
    vbos.add(id);/*from   w  w  w  . j  av  a  2s.c om*/
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, id);
    return id;
}

From source file:uk.co.ifs_studios.engine.geometry.BasicDrawElement.java

License:Open Source License

/**
 * Create new DrawElement.//  w ww. j av  a 2s. c o  m
 */
public BasicDrawElement() {
    this.shader = new BasicShader();

    this.matrixBuffer = BufferUtils.createFloatBuffer(16);

    this.vao = GL30.glGenVertexArrays();
    this.vbo = GL15.glGenBuffers();
    this.ibo = GL15.glGenBuffers();
    this.cbo = GL15.glGenBuffers();
}

From source file:voxels.Mesh.java

License:Open Source License

private void createMesh() {
    // We'll define our quad using 4 vertices of the custom 'TexturedVertex' class
    VertexData v0 = new VertexData();
    v0.setXYZ(-0.5f, 0.5f, 0.5f);/*w  w  w  .j  av  a2 s  .  com*/
    v0.setRGB(1, 0, 0);
    v0.setST(0, 0);
    VertexData v1 = new VertexData();
    v1.setXYZ(-0.5f, -0.5f, 0.5f);
    v1.setRGB(0, 1, 0);
    v1.setST(0, 1);
    VertexData v2 = new VertexData();
    v2.setXYZ(0.5f, -0.5f, 0.5f);
    v2.setRGB(0, 0, 1);
    v2.setST(1, 1);
    VertexData v3 = new VertexData();
    v3.setXYZ(0.5f, 0.5f, 0.5f);
    v3.setRGB(1, 1, 1);
    v3.setST(1, 0);

    VertexData v4 = new VertexData();
    v4.setXYZ(-0.5f, 0.5f, -0.5f);
    v4.setRGB(1, 0, 0);
    v4.setST(0, 0);
    VertexData v5 = new VertexData();
    v5.setXYZ(-0.5f, -0.5f, -0.5f);
    v5.setRGB(0, 1, 0);
    v5.setST(0, 1);
    VertexData v6 = new VertexData();
    v6.setXYZ(-0.5f, -0.5f, 0.5f);
    v6.setRGB(0, 0, 1);
    v6.setST(1, 1);
    VertexData v7 = new VertexData();
    v7.setXYZ(-0.5f, 0.5f, 0.5f);
    v7.setRGB(1, 1, 1);
    v7.setST(1, 0);

    VertexData v8 = new VertexData();
    v8.setXYZ(-0.5f, 0.5f, -0.5f);
    v8.setRGB(1, 0, 0);
    v8.setST(0, 0);
    VertexData v9 = new VertexData();
    v9.setXYZ(-0.5f, 0.5f, 0.5f);
    v9.setRGB(0, 1, 0);
    v9.setST(0, 1);
    VertexData v10 = new VertexData();
    v10.setXYZ(0.5f, 0.5f, 0.5f);
    v10.setRGB(0, 0, 1);
    v10.setST(1, 1);
    VertexData v11 = new VertexData();
    v11.setXYZ(0.5f, 0.5f, -0.5f);
    v11.setRGB(1, 1, 1);
    v11.setST(1, 0);

    VertexData v12 = new VertexData();
    v12.setXYZ(0.5f, -0.5f, 0.5f);
    v12.setRGB(1, 0, 0);
    v12.setST(0, 0);
    VertexData v13 = new VertexData();
    v13.setXYZ(-0.5f, -0.5f, 0.5f);
    v13.setRGB(0, 1, 0);
    v13.setST(0, 1);
    VertexData v14 = new VertexData();
    v14.setXYZ(-0.5f, -0.5f, -0.5f);
    v14.setRGB(0, 0, 1);
    v14.setST(1, 1);
    VertexData v15 = new VertexData();
    v15.setXYZ(0.5f, -0.5f, -0.5f);
    v15.setRGB(1, 1, 1);
    v15.setST(1, 0);

    VertexData v16 = new VertexData();
    v16.setXYZ(0.5f, -0.5f, -0.5f);
    v16.setRGB(1, 0, 0);
    v16.setST(0, 0);
    VertexData v17 = new VertexData();
    v17.setXYZ(-0.5f, -0.5f, -0.5f);
    v17.setRGB(0, 1, 0);
    v17.setST(0, 1);
    VertexData v18 = new VertexData();
    v18.setXYZ(-0.5f, 0.5f, -0.5f);
    v18.setRGB(0, 0, 1);
    v18.setST(1, 1);
    VertexData v19 = new VertexData();
    v19.setXYZ(0.5f, 0.5f, -0.5f);
    v19.setRGB(1, 1, 1);
    v19.setST(1, 0);

    VertexData v20 = new VertexData();
    v20.setXYZ(0.5f, -0.5f, 0.5f);
    v20.setRGB(1, 0, 0);
    v20.setST(0, 0);
    VertexData v21 = new VertexData();
    v21.setXYZ(0.5f, -0.5f, -0.5f);
    v21.setRGB(0, 1, 0);
    v21.setST(0, 1);
    VertexData v22 = new VertexData();
    v22.setXYZ(0.5f, 0.5f, -0.5f);
    v22.setRGB(0, 0, 1);
    v22.setST(1, 1);
    VertexData v23 = new VertexData();
    v23.setXYZ(0.5f, 0.5f, 0.5f);
    v23.setRGB(1, 1, 1);
    v23.setST(1, 0);

    vertices = new VertexData[] { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16,
            v17, v18, v19, v20, v21, v22, v23 };

    // Put each 'Vertex' in one FloatBuffer
    verticesByteBuffer = BufferUtils.createByteBuffer(vertices.length * VertexData.stride);
    FloatBuffer verticesFloatBuffer = verticesByteBuffer.asFloatBuffer();
    for (VertexData vertice : vertices) {
        // Add position, color and texture floats to the buffer
        verticesFloatBuffer.put(vertice.getElements());
    }
    verticesFloatBuffer.flip();

    // OpenGL expects to draw vertices in counter clockwise order by default
    short[] indices = new short[6 * vertices.length / 4];
    for (short i = 0; i < indices.length / 6; i++) {
        // 0, 1, 2, 2, 3, 0,4, 5 , 0, 5, 1, 0,  1, 5, 2, 5, 6, 2,  3, 0, 7, 0, 2, 7,  8, 6, 4, 6, 5, 4,  2, 3, 8, 3, 6, 8
        indices[i * 6 + 0] = (short) (0 + 4 * i);
        indices[i * 6 + 1] = (short) (1 + 4 * i);
        indices[i * 6 + 2] = (short) (2 + 4 * i);
        indices[i * 6 + 3] = (short) (2 + 4 * i);
        indices[i * 6 + 4] = (short) (3 + 4 * i);
        indices[i * 6 + 5] = (short) (0 + 4 * i);
    }

    //indices = new byte[]{0, 1, 2, 2, 3, 0,4, 5 , 0, 5, 1, 0,  1, 5, 2, 5, 6, 2,  3, 0, 7, 0, 2, 7,  8, 6, 4, 6, 5, 4,  2, 3, 8, 3, 6, 8};
    vertices = null;

    indicesCount = indices.length;
    ShortBuffer indicesBuffer = BufferUtils.createShortBuffer(indicesCount);
    indicesBuffer.put(indices);
    indicesBuffer.flip();

    // Create a new Vertex Array Object in memory and select it (bind)
    vaoId = GL30.glGenVertexArrays();
    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, VertexData.positionElementCount, GL11.GL_FLOAT, false, VertexData.stride,
            VertexData.positionByteOffset);
    // Put the color components in attribute list 1
    GL20.glVertexAttribPointer(1, VertexData.colorElementCount, GL11.GL_FLOAT, false, VertexData.stride,
            VertexData.colorByteOffset);
    // Put the texture coordinates in attribute list 2
    GL20.glVertexAttribPointer(2, VertexData.textureElementCount, GL11.GL_FLOAT, false, VertexData.stride,
            VertexData.textureByteOffset);

    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:voxicity.ChunkNode.java

License:Open Source License

public void clean() {
    last_update = Time.get_time_ms();

    vert_buf = GL15.glGenBuffers();
    tex_buf = GL15.glGenBuffers();/*ww  w.ja  v a 2s .  com*/

    if (shader_prog == 0)
        create_shader_prog();

    int offset = 0;

    verts.clear();
    tex_coords.clear();
    batches.clear();

    Map<Integer, IntBuffer> id_ind = new HashMap<Integer, IntBuffer>();

    BlockChunkLoc loc = new BlockChunkLoc(0, 0, 0, chunk);

    // Iterate through all blocks in the chunk
    for (int i = 0; i < Constants.Chunk.side_length; i++)
        for (int j = 0; j < Constants.Chunk.side_length; j++)
            for (int k = 0; k < Constants.Chunk.side_length; k++) {
                // Get block id
                int id = chunk.get_block(i, j, k);

                // If air, do nothing, next block
                if (id != Constants.Blocks.air) {
                    loc.x = i;
                    loc.y = j;
                    loc.z = k;

                    Block b = Blocks.get(id);

                    // If culled, do nothing, next block
                    if (!cull(loc) && !chunk_edge_cull(loc)) {
                        // Get the vertices for this block and put them in the verts buffer
                        verts.put(Coord.offset_coords(b.vertices(),
                                new Vector3f(pos.x + loc.x, pos.y + loc.y, pos.z + loc.z)));

                        // Get the texture coords for this block and put them in the tex_coords buffer
                        tex_coords.put(b.texture_coords());

                        // Look up the texture for these vertices
                        int tex_id = TextureManager.get_texture(b.texture_string());

                        // Look up the index buffer for this texture and create it if needed
                        if (!id_ind.containsKey(tex_id))
                            id_ind.put(tex_id, BufferUtils.createIntBuffer(24 * Constants.Chunk.block_number));

                        // Get the index buffer for this texture
                        IntBuffer ind_buf = id_ind.get(tex_id);

                        // Get the indices for this block's vertices and put them in the ind_buf buffer after offsetting them
                        IntBuffer block_indices = b.indices();
                        while (block_indices.hasRemaining())
                            ind_buf.put(block_indices.get() + offset);

                        // Increase the offset by the number of indices
                        offset += block_indices.position();
                    }
                }
            }

    if (verts.position() == 0) {
        empty = true;
        dirty = false;
        return;
    }

    verts.limit(verts.position()).rewind();
    tex_coords.limit(tex_coords.position()).rewind();
    System.out.println(verts.limit() + " " + tex_coords.limit());

    AABB box = new AABB(Constants.Chunk.side_length, Constants.Chunk.side_length, Constants.Chunk.side_length);
    box.center_on(pos.x + box.dimensions().x, pos.y + box.dimensions().y, pos.z + box.dimensions().z);

    // Pass the buffer to a VBO
    System.out.println("Binding vertex buffer");
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vert_buf);
    Util.checkGLError();
    System.out.println("Setting buffer data");
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, verts, GL15.GL_STATIC_DRAW);
    Util.checkGLError();
    System.out.println("Vertex buffer data set");

    System.out.println("Size of vertex buffer is: "
            + GL15.glGetBufferParameter(GL15.GL_ARRAY_BUFFER, GL15.GL_BUFFER_SIZE));

    // Pass the buffer to a VBO
    System.out.println("Binding tex coord buffer");
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, tex_buf);
    Util.checkGLError();
    System.out.println("Setting buffer data");
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, tex_coords, GL15.GL_STATIC_DRAW);
    Util.checkGLError();

    System.out.println("Size of tex coord buffer is: "
            + GL15.glGetBufferParameter(GL15.GL_ARRAY_BUFFER, GL15.GL_BUFFER_SIZE));

    for (Map.Entry<Integer, IntBuffer> entry : id_ind.entrySet()) {
        entry.getValue().limit(entry.getValue().position()).rewind();

        IntBuffer ibo = BufferUtils.createIntBuffer(1);
        GL15.glGenBuffers(ibo);

        if (ibo.get(0) == 0)
            System.out.println("Could not generate buffer object!");

        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, ibo.get(0));
        Util.checkGLError();
        GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, entry.getValue(), GL15.GL_STATIC_DRAW);
        Util.checkGLError();
        System.out.println("Size of index buffer is: "
                + GL15.glGetBufferParameter(GL15.GL_ELEMENT_ARRAY_BUFFER, GL15.GL_BUFFER_SIZE) + " with "
                + entry.getValue().limit() + " indices");

        System.out.println(
                "Creating batch: " + entry.getKey() + " " + ibo.get(0) + " " + entry.getValue().limit());
        batches.add(new Batch(entry.getKey(), ibo.get(0), entry.getValue().limit(), shader_prog, tex_buf,
                vert_buf, box));

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

    }

    empty = false;
    dirty = false;
}

From source file:wrapper.vbo.Vbo.java

License:Open Source License

public void create(Vertex2d[] coordinates) {
    vertex = BufferUtils.createFloatBuffer(coordinates.length * 2);
    texture = BufferUtils.createFloatBuffer(coordinates.length * 2);
    vertcount = coordinates.length;//from   w w w  .j a va2s . com
    maxlength = vertcount;
    for (int i = 0; i < coordinates.length; i++) {
        vertex.put(coordinates[i].x);
        vertex.put(coordinates[i].y);
        texture.put(coordinates[i].u);
        texture.put(coordinates[i].v);
    }
    vertid = GL15.glGenBuffers();
    texcoordid = GL15.glGenBuffers();
    vertex.rewind();
    texture.rewind();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertid);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertex, GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, texcoordid);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, texture, GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

}

From source file:wrapper.vbo.Vbo.java

License:Open Source License

public void create(Vertex3d[] coordinates) {
    vertex = BufferUtils.createFloatBuffer(coordinates.length * 3);
    texture = BufferUtils.createFloatBuffer(coordinates.length * 2);
    vertcount = coordinates.length;/*from  w w w  . jav  a2  s  .  c o  m*/
    maxlength = vertcount;
    for (int i = 0; i < coordinates.length; i++) {
        vertex.put(coordinates[i].x);
        vertex.put(coordinates[i].y);
        vertex.put(coordinates[i].z);
        texture.put(coordinates[i].u);
        texture.put(coordinates[i].v);
    }
    vertid = GL15.glGenBuffers();
    texcoordid = GL15.glGenBuffers();
    vertex.rewind();
    texture.rewind();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertid);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertex, GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, texcoordid);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, texture, GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

}

From source file:wrapper.vbo.Vbo.java

License:Open Source License

public void create(ProgressiveBuffer[] b) {// coordinates are NOT bound by
    // this/*  w w  w .j a  va2s  . c  om*/

    vertex = b[0].get_data();
    texture = b[1].get_data();
    vertcount = b[0].get_data().limit();
    maxlength = vertcount;
    vertex.rewind();
    texture.rewind();
    vertid = GL15.glGenBuffers();
    texcoordid = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertid);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertex, GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, texcoordid);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, texture, GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

}

From source file:wrapper.vbo.Vbo.java

License:Open Source License

public void create(int size) {
    maxlength = size;/*from  w  w  w . j a  v a2  s.com*/
    vertex = BufferUtils.createFloatBuffer(size);
    texture = BufferUtils.createFloatBuffer(size);
    vertcount = 0;
    vertex.rewind();
    texture.rewind();
    vertid = GL15.glGenBuffers();
    texcoordid = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertid);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertex, GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, texcoordid);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, texture, GL15.GL_DYNAMIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
}

From source file:wrath.client.graphics.Model.java

License:Open Source License

/**
 * Creates a 2D or 3D model from a list of verticies.
 * Models are always assumed to be made with triangles, and will be rendered as such.
 * @param name The {@link java.lang.String} name of the Model.
 * @param verticies The list of verticies in the model. One point is represented by (x, y, z), and there must be at least 3 points.
 * @param indicies The list of points to connect for OpenGL. Look up indicies in OpenGL for reference.
 * @param normals The list of 3 float vectors describing the normal vector of the model's surface.
 * @param useDefaultShaders If true, shaders will be set up automatically.
 * @return Returns the {@link wrath.client.graphics.Model} object of your model.
 *//*www  . java  2s. c o  m*/
public static Model createModel(String name, float[] verticies, int[] indicies, float[] normals,
        boolean useDefaultShaders) {
    // Generating VAO
    int vaoid = GL30.glGenVertexArrays();
    GL30.glBindVertexArray(vaoid);

    // Generating Verticies VBO
    int vtvboid = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vtvboid);
    FloatBuffer vbuffer = BufferUtils.createFloatBuffer(verticies.length);
    vbuffer.put(verticies);
    vbuffer.flip();
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vbuffer, GL15.GL_STATIC_DRAW);
    GL20.glVertexAttribPointer(VERTICIES_ATTRIB_INDEX, 3, GL11.GL_FLOAT, false, 0, 0);

    // Generating Normals VBO
    int nmvboid = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, nmvboid);
    FloatBuffer nbuffer = BufferUtils.createFloatBuffer(normals.length);
    nbuffer.put(normals);
    nbuffer.flip();
    GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, nbuffer, GL15.GL_STATIC_DRAW);
    GL20.glVertexAttribPointer(NORMALS_ATTRIB_INDEX, 3, GL11.GL_FLOAT, false, 0, 0);

    // Generating Indicies VBO
    int invboid = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, invboid);
    IntBuffer ibuffer = BufferUtils.createIntBuffer(indicies.length);
    ibuffer.put(indicies);
    ibuffer.flip();
    GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, ibuffer, GL15.GL_STATIC_DRAW);

    // Creating Model Object
    Model model;
    File mfile = new File("assets/models/" + name);
    if (!mfile.exists())
        model = new Model(name, vaoid, new Integer[] { vtvboid, invboid, nmvboid }, verticies, indicies,
                normals, useDefaultShaders);
    else
        model = new Model(name, vaoid, new Integer[] { vtvboid, invboid, nmvboid }, null, null, null,
                useDefaultShaders);

    Game.getCurrentInstance().getLogger().println("Loaded model '" + name + "' with " + verticies.length
            + " verticies, " + indicies.length + " indicies, and " + normals.length + " normals.");
    if (useDefaultShaders)
        model.attachShader(ShaderProgram.DEFAULT_SHADER);

    // Unbinding OpenGL Objects
    GL30.glBindVertexArray(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    Game.getCurrentInstance().addToTrashCleanup(model);
    Game.getCurrentInstance().addToRefreshList(model);
    return model;
}

From source file:wrath.client.graphics.Model.java

License:Open Source License

/**
 * Applies a {@link wrath.client.graphics.Texture} to the model to be rendered on top of the Model.
 * Only one can be attached at a time.//  ww w  . j  a v  a  2  s  .  c  o m
 * @param texture The {@link wrath.client.graphics.Texture} to associate with this model.
 * @param textureCoords The (u, v) coordinates of the texture to the model.
 */
public void attachTexture(Texture texture, float[] textureCoords) {
    this.texture = texture;
    if (this.textureCoords != null)
        textureCoords = this.textureCoords;
    if (shader == null)
        Game.getCurrentInstance().getLogger().println(
                "Warning: If no shader is present to pass texture co-ordinates, then the texture will not render!");
    GL30.glBindVertexArray(vao);
    int vboid = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboid);
    FloatBuffer vbuffer = BufferUtils.createFloatBuffer(textureCoords.length);
    vbuffer.put(textureCoords);
    vbuffer.flip();
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vbuffer, GL15.GL_STATIC_DRAW);
    GL20.glVertexAttribPointer(TEXTURE_ATTRIB_INDEX, 2, GL11.GL_FLOAT, false, 0, 0);

    if (shader != null)
        shader.bindAttribute(TEXTURE_ATTRIB_INDEX, "in_TextureCoord");
    GL30.glBindVertexArray(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    vbos.add(vboid);
    EntityRenderer.preLoadedModels.put(name + "," + texture.getTextureFile().getName(), this);
}