/** * Update the vertex count based on the current limit of the vertex buffer. */ public void updateVertexCount() { if (_vertexCoords == null) { _vertexCount = 0; } else { _vertexCount = _vertexCoords.getTupleCount(); } // update primitive count if we are using arrays if (_indexBuffer == null) { updatePrimitiveCounts(); } }
private void saveFloatBufferData(final FloatBufferData data, final PrintWriter objPw, final String keyword, final int expectedTupleCount) { if (data != null) { if (keyword == null || keyword.isEmpty()) { throw new IllegalArgumentException("null or empty keyword not supported"); } else { final int tupleSize = data.getValuesPerTuple(); final int tupleCount = data.getTupleCount(); if (tupleCount < expectedTupleCount) { throw new IllegalArgumentException( "[" + keyword + "] not enough data to match with the vertex count: " + tupleCount + " < " + expectedTupleCount); } else { if (tupleCount > expectedTupleCount) { ObjExporter.logger.warning("[" + keyword + "] too much data to match with the vertex count: " + tupleCount + " > " + expectedTupleCount + ". Skips useless tuple(s)"); } } for (int tupleIndex = 0; tupleIndex < expectedTupleCount; tupleIndex++) { objPw.print(keyword); for (int valueIndex = 0; valueIndex < tupleSize; valueIndex++) { objPw.print(" " + data.getBuffer().get(tupleIndex * tupleSize + valueIndex)); } objPw.println(); } } } } }
/** * 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(); } }
/** * Generates a Vector2 array from the given FloatBufferData. * * @param buff * the FloatBufferData to read from * @param defaults * a default value to set each color to, used when the tuple size of the given {@link FloatBufferData} is * smaller than 2. * @return a newly generated array of Vector2 objects */ public static Vector2[] getVector2Array(final FloatBufferData data, final ReadOnlyVector2 defaults) { final FloatBuffer buff = data.getBuffer(); buff.clear(); final Vector2[] verts = new Vector2[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) { final Vector2 v = new Vector2(defaults); v.setX(buff.get()); if (tupleSize > 1) { v.setY(buff.get()); } if (tupleSize > 2) { buff.position(buff.position() + tupleSize - 2); } verts[x] = v; } return verts; }
final FloatBuffer buff = data.getBuffer(); buff.clear(); final Vector4[] verts = new Vector4[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) {
/** * Generates a Vector2 array from the given FloatBufferData. * * @param buff * the FloatBufferData to read from * @param defaults * a default value to set each color to, used when the tuple size of the given {@link FloatBufferData} is * smaller than 2. * @return a newly generated array of Vector2 objects */ public static Vector2[] getVector2Array(final FloatBufferData data, final ReadOnlyVector2 defaults) { final FloatBuffer buff = data.getBuffer(); buff.clear(); final Vector2[] verts = new Vector2[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) { final Vector2 v = new Vector2(defaults); v.setX(buff.get()); if (tupleSize > 1) { v.setY(buff.get()); } if (tupleSize > 2) { buff.position(buff.position() + tupleSize - 2); } verts[x] = v; } return verts; }
final FloatBuffer buff = data.getBuffer(); buff.clear(); final Vector3[] verts = new Vector3[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) {
final FloatBuffer buff = data.getBuffer(); buff.clear(); final Vector3[] verts = new Vector3[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) {
GL11.glDrawArrays(glIndexMode, 0, vertices.getTupleCount()); } else { GL31.glDrawArraysInstanced(glIndexMode, 0, vertices.getTupleCount(), primcount); addStats(indexModes[0], vertices.getTupleCount());
final FloatBuffer buff = data.getBuffer(); buff.clear(); final ColorRGBA[] colors = new ColorRGBA[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < colors.length; x++) {
final FloatBuffer buff = data.getBuffer(); buff.clear(); final ColorRGBA[] colors = new ColorRGBA[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < colors.length; x++) {
final FloatBuffer buff = data.getBuffer(); buff.clear(); final Vector4[] verts = new Vector4[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) {
throw new IllegalArgumentException("cannot export a mesh with no vertices"); final int expectedTupleCount = verticesData.getTupleCount(); saveFloatBufferData(verticesData, objPw, "v", expectedTupleCount); final FloatBufferData texCoordsData = meshData.getTextureCoords(0);
gl.glDrawArrays(glIndexMode, 0, vertexBuffer.getTupleCount()); } else { if (gl.isGL2GL3()) { gl.getGL2GL3().glDrawArraysInstanced(glIndexMode, 0, vertexBuffer.getTupleCount(), primcount); addStats(indexModes[0], vertexBuffer.getTupleCount());
final int qVerts = vertices.getTupleCount();