/** * Update the vertex count based on the current limit of the vertex buffer. */ public void updateVertexCount() { final FloatBufferData vertexCoords = getVertexCoords(); if (vertexCoords == null) { _vertexCount = 0; } else { _vertexCount = vertexCoords.getTupleCount(); } // update primitive count if we are using arrays if (_indexBuffer == null) { updatePrimitiveCounts(); } }
_clips.get(i).getMeshData().getVertexCoords().setNeedsRefresh(true); _clips.get(i).getMeshData().getIndices().setNeedsRefresh(true);
_clips.get(i).getMeshData().getVertexCoords().setNeedsRefresh(true); _clips.get(i).getMeshData().getIndices().setNeedsRefresh(true);
/** * Random vertex. * * @param store * the vector object to store the result in. if null, a new one is created. * * @return a random vertex from the vertices stored in this MeshData. null is returned if there are no vertices. */ public Vector3 randomVertex(final Vector3 store) { final FloatBufferData vertexCoords = getVertexCoords(); if (vertexCoords == null) { return null; } Vector3 result = store; if (result == null) { result = new Vector3(); } final int i = MathUtils.nextRandomInt(0, getVertexCount() - 1); BufferUtils.populateFromBuffer(result, vertexCoords.getBuffer(), i); return result; }
final FloatBufferData vertsData = _meshData.getVertexCoords(); if (vertsData == null) { _meshData.setVertexBuffer(BufferUtils.createVector3Buffer(verts));
if (first) { vertCoords = md.getVertexCoords().getValuesPerTuple(); volumeType = mesh.getModelBound(null); states = mesh.getLocalRenderStates(); first = false; } else if (vertCoords != md.getVertexCoords().getValuesPerTuple()) { throw new IllegalArgumentException("all MeshData vertex coords must use same tuple size.");
if (first) { vertCoords = md.getVertexCoords().getValuesPerTuple(); volumeType = mesh.getModelBound(null); states = mesh.getLocalRenderStates(); first = false; } else if (vertCoords != md.getVertexCoords().getValuesPerTuple()) { throw new IllegalArgumentException("all MeshData vertex coords must use same tuple size.");
_meshData.getVertexCoords().setNeedsRefresh(true); if (bindNorms != null) { _meshData.getNormalCoords().setNeedsRefresh(true);
vertCount = mesh.getMeshData().getVertexCount(); final Vector3[] verts = BufferUtils.getVector3Array(mesh.getMeshData().getVertexCoords(), Vector3.ZERO); Vector3[] norms = null; if (mesh.getMeshData().getNormalBuffer() != null) {
vertCount = mesh.getMeshData().getVertexCount(); final Vector3[] verts = BufferUtils.getVector3Array(mesh.getMeshData().getVertexCoords(), Vector3.ZERO); Vector3[] norms = null; if (mesh.getMeshData().getNormalBuffer() != null) {
/** * 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(); }
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; } }
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; } }
renderer.setupVertexData(meshData.getVertexCoords()); primcount); } else { renderer.drawArrays(meshData.getVertexCoords(), meshData.getIndexLengths(), meshData.getIndexModes(), primcount);
public void visit(final Spatial spatial) { if (spatial instanceof Mesh) { final Mesh mesh = (Mesh) spatial; _deleter.deleteVBOs(mesh.getMeshData().getVertexCoords()); _deleter.deleteVBOs(mesh.getMeshData().getIndices()); _deleter.deleteVBOs(mesh.getMeshData().getInterleavedData()); _deleter.deleteVBOs(mesh.getMeshData().getNormalCoords()); _deleter.deleteVBOs(mesh.getMeshData().getTangentCoords()); for (final FloatBufferData coords : mesh.getMeshData().getTextureCoords()) { _deleter.deleteVBOs(coords); } _deleter.deleteVBOs(mesh.getMeshData().getColorCoords()); _deleter.deleteVBOs(mesh.getMeshData().getFogCoords()); } } }
meshData.setInterleavedData(interleaved); renderer.setupInterleavedDataVBO(meshData.getInterleavedData(), meshData.getVertexCoords(), meshData.getNormalCoords(), meshData.getColorCoords(), meshData.getTextureCoords()); } else { renderer.setupVertexDataVBO(meshData.getVertexCoords()); primcount); } else { renderer.drawArrays(meshData.getVertexCoords(), meshData.getIndexLengths(), meshData.getIndexModes(), primcount);
/** * */ 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(); }
final FloatBufferData verts = meshData.getVertexCoords().makeCopy(); final FloatBufferData norms = meshData.getNormalBuffer() != null ? meshData.getVertexCoords().makeCopy() : null; final FloatBufferData colors = meshData.getColorBuffer() != null ? meshData.getColorCoords().makeCopy() : null; final FloatBufferData tangents = meshData.getTangentBuffer() != null ? meshData.getTangentCoords().makeCopy()
final FloatBufferData verts = meshData.getVertexCoords().makeCopy(); final FloatBufferData norms = meshData.getNormalBuffer() != null ? meshData.getVertexCoords().makeCopy() : null; final FloatBufferData colors = meshData.getColorBuffer() != null ? meshData.getColorCoords().makeCopy() : null; final FloatBufferData fogs = meshData.getFogBuffer() != null ? meshData.getFogCoords().makeCopy() : null;
final FloatBufferData vertexCoords = getVertexCoords(); if (vertexCoords == null || _indexBuffer == null) { return null;