List of usage examples for org.lwjgl.opengl GL15 GL_ARRAY_BUFFER
int GL_ARRAY_BUFFER
To view the source code for org.lwjgl.opengl GL15 GL_ARRAY_BUFFER.
Click Source Link
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 ww. j a v 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 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 ww . ja va 2s . co 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 ww w . j a v a 2 s . c o 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 bindBufferData(FloatBuffer vertexBuffer) { bindBuffer();/* ww w . j a v a 2 s . c om*/ int count = vertexBuffer.limit() - vertexBuffer.position(); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertexBuffer, GL15.GL_STREAM_DRAW); }
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 {//w w w . j ava 2s .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 www . j a v a2 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)); }
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); }