/** * Set the basic data for this mesh such as texture coordinates, index mode and our vertex buffer. */ private void initialize() { final FloatBufferData vbuf = new FloatBufferData(BufferUtils.createVector2Buffer(4), 2); vbuf.setVboAccessMode(VBOAccessMode.DynamicDraw); _meshData.setVertexCoords(vbuf); final FloatBuffer tbuf = BufferUtils.createVector2Buffer(4); _meshData.setTextureBuffer(tbuf, 0); _meshData.getTextureCoords(0).setVboAccessMode(VBOAccessMode.DynamicDraw); tbuf.put(0).put(1); tbuf.put(0).put(0); tbuf.put(1).put(0); tbuf.put(1).put(1); _meshData.setIndexMode(IndexMode.TriangleFan); }
/** * */ public void updateGeometry() { final int numPairs = _tessSteps + 1; final int totalVerts = _tessRings * numPairs * 2; final MeshData meshData = getMeshData(); FloatBuffer crdBuf = meshData.getVertexBuffer(); if (crdBuf == null || totalVerts != crdBuf.limit() / 3) { // allocate new buffers meshData.setVertexBuffer(BufferUtils.createVector3Buffer(totalVerts)); meshData.setNormalBuffer(BufferUtils.createVector3Buffer(totalVerts)); meshData.setTextureBuffer(BufferUtils.createVector2Buffer(totalVerts), 0); crdBuf = meshData.getVertexBuffer(); meshData.getVertexCoords().setVboAccessMode(VBOAccessMode.DynamicDraw); meshData.getNormalCoords().setVboAccessMode(VBOAccessMode.DynamicDraw); meshData.getTextureCoords(0).setVboAccessMode(VBOAccessMode.DynamicDraw); } final FloatBuffer nrmBuf = meshData.getNormalBuffer(); final FloatBuffer txcBuf = meshData.getTextureBuffer(0); calculateVertexData(_tessRings, numPairs, totalVerts, crdBuf, nrmBuf, txcBuf); // mark our data as needing updates meshData.markBufferDirty(MeshData.KEY_VertexCoords); meshData.markBufferDirty(MeshData.KEY_NormalCoords); meshData.markBufferDirty(MeshData.KEY_TextureCoords0); updateModelBound(); }
private static Mesh createMesh() { final Mesh mesh = new Mesh(); mesh.setRenderMaterial("ui/untextured/vertex_color.yaml"); final MeshData meshData = mesh.getMeshData(); meshData.setVertexBuffer(BufferUtils.createVector3Buffer(4)); meshData.getVertexCoords().setVboAccessMode(VBOAccessMode.DynamicDraw); meshData.setColorBuffer(BufferUtils.createColorBuffer(4)); meshData.getColorCoords().setVboAccessMode(VBOAccessMode.DynamicDraw); meshData.setIndexMode(IndexMode.TriangleFan); final BlendState blend = new BlendState(); blend.setBlendEnabled(true); blend.setSourceFunction(SourceFunction.SourceAlpha); blend.setDestinationFunction(DestinationFunction.OneMinusSourceAlpha); mesh.setRenderState(blend); mesh.updateWorldRenderStates(false); return mesh; } }
/** * Check whether buffers have sufficient capacity to hold current string values; if not, increase capacity and set * the limit. * * @param text */ protected void checkBuffers(final String text) { final int chunkSize = 30; final int vertices = 6 * text.length(); final int chunks = 1 + (vertices / chunkSize); final int required = chunks * chunkSize; FloatBuffer vertexBuffer = getMeshData().getVertexBuffer(); FloatBuffer texCrdBuffer = getMeshData().getTextureBuffer(0); if (vertexBuffer == null || vertexBuffer.capacity() < required * 3) { vertexBuffer = BufferUtils.createVector3Buffer(required); texCrdBuffer = BufferUtils.createVector2Buffer(required); getMeshData().setVertexBuffer(vertexBuffer); getMeshData().setTextureBuffer(texCrdBuffer, 0); getMeshData().getVertexCoords().setVboAccessMode(VBOAccessMode.DynamicDraw); getMeshData().getTextureCoords(0).setVboAccessMode(VBOAccessMode.DynamicDraw); } vertexBuffer.limit(vertices * 3).rewind(); texCrdBuffer.limit(vertices * 2).rewind(); }
/** * Initializes the vertices and indices. */ private void initialize() { final MeshData meshData = getMeshData(); meshData.setIndexMode(IndexMode.TriangleStrip); // clipSideSize is the number of vertices per clipmapside, so number of all vertices is clipSideSize * // clipSideSize final FloatBufferData vertices = new FloatBufferData( BufferUtils.createVector4Buffer(clipSideSize * clipSideSize), 4); vertices.setVboAccessMode(VBOAccessMode.DynamicDraw); meshData.setVertexCoords(vertices); final int indicesSize = 4 * (3 * frameSize * frameSize + clipSideSize * clipSideSize / 2 + 4 * frameSize - 10); final IndexBufferData<?> indices = BufferUtils.createIndexBufferData(indicesSize, vertices.getBufferCapacity() - 1); indices.setVboAccessMode(VBOAccessMode.DynamicDraw); tmpIndices = new int[indicesSize]; meshData.setIndices(indices); // Go through all rows and fill them with vertexindices. for (int z = 0; z < clipSideSize - 1; z++) { fillRow(0, clipSideSize - 1, z, z + 1); } }
mData.setNormalCoords(norms); mData.setTextureCoords(texs, 0); verts.setVboAccessMode(VBOAccessMode.DynamicDraw); norms.setVboAccessMode(VBOAccessMode.DynamicDraw); texs.setVboAccessMode(VBOAccessMode.DynamicDraw);
meshData.getVertexCoords().setVboAccessMode(VBOAccessMode.StreamDraw); if (meshData.getNormalCoords() != null) { meshData.getNormalCoords().setVboAccessMode(VBOAccessMode.StreamDraw);
private static Mesh createMesh() { final Mesh mesh = new Mesh(); mesh.setRenderMaterial("ui/textured/default_color.yaml"); final MeshData meshData = mesh.getMeshData(); meshData.setVertexCoords(new FloatBufferData(BufferUtils.createVector2Buffer(4), 2)); meshData.setTextureBuffer(BufferUtils.createVector2Buffer(4), 0); meshData.setIndexMode(IndexMode.TriangleFan); meshData.getVertexCoords().setVboAccessMode(VBOAccessMode.DynamicDraw); mesh.setRenderState(SubTexUtil._tstate); final BlendState blend = new BlendState(); blend.setBlendEnabled(true); blend.setSourceFunction(SourceFunction.SourceAlpha); blend.setDestinationFunction(DestinationFunction.OneMinusSourceAlpha); mesh.setRenderState(blend); mesh.updateWorldRenderStates(false); return mesh; } }
if (_meshData.getVertexBuffer() == null || _meshData.getVertexBuffer().capacity() < verts * 2) { _meshData.setVertexCoords(new FloatBufferData(verts * 2, 2)); _meshData.getVertexCoords().setVboAccessMode(VBOAccessMode.DynamicDraw); } else { _meshData.getVertexBuffer().clear(); _meshData.getTextureCoords(0).setVboAccessMode(VBOAccessMode.DynamicDraw); } else { _meshData.getTextureBuffer(0).clear();