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(); } } } } }
/** * 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; }
/** * 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; }
buff.clear(); final Vector3[] verts = new Vector3[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) { final Vector3 v = new Vector3(defaults);
buff.clear(); final ColorRGBA[] colors = new ColorRGBA[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < colors.length; x++) { final ColorRGBA c = new ColorRGBA(defaults);
buff.clear(); final Vector4[] verts = new Vector4[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) { final Vector4 v = new Vector4(defaults);
buff.clear(); final Vector3[] verts = new Vector3[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) { final Vector3 v = new Vector3(defaults);
buff.clear(); final Vector4[] verts = new Vector4[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < verts.length; x++) { final Vector4 v = new Vector4(defaults);
buff.clear(); final ColorRGBA[] colors = new ColorRGBA[data.getTupleCount()]; final int tupleSize = data.getValuesPerTuple(); for (int x = 0; x < colors.length; x++) { final ColorRGBA c = new ColorRGBA(defaults);
public void setupColorData(final FloatBufferData colorBufferData) { final FloatBuffer colorBuffer = colorBufferData != null ? colorBufferData.getBuffer() : null; if (colorBuffer == null) { GL11.glDisableClientState(GL11.GL_COLOR_ARRAY); } else { GL11.glEnableClientState(GL11.GL_COLOR_ARRAY); colorBuffer.rewind(); GL11.glColorPointer(colorBufferData.getValuesPerTuple(), 0, colorBuffer); } }
public void setupVertexData(final FloatBufferData vertexBufferData) { final FloatBuffer vertexBuffer = vertexBufferData != null ? vertexBufferData.getBuffer() : null; if (vertexBuffer == null) { GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY); } else { GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY); vertexBuffer.rewind(); GL11.glVertexPointer(vertexBufferData.getValuesPerTuple(), 0, vertexBuffer); } }
public void setupVertexDataVBO(final FloatBufferData data) { final RenderContext context = ContextManager.getCurrentContext(); final RendererRecord rendRecord = context.getRendererRecord(); final int vboID = setupVBO(data, context); if (vboID != 0) { GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY); LwjglRendererUtil.setBoundVBO(rendRecord, vboID); GL11.glVertexPointer(data.getValuesPerTuple(), GL11.GL_FLOAT, 0, 0); } else { GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY); } }
public void setupColorDataVBO(final FloatBufferData data) { final RenderContext context = ContextManager.getCurrentContext(); final RendererRecord rendRecord = context.getRendererRecord(); final int vboID = setupVBO(data, context); if (vboID != 0) { GL11.glEnableClientState(GL11.GL_COLOR_ARRAY); LwjglRendererUtil.setBoundVBO(rendRecord, vboID); GL11.glColorPointer(data.getValuesPerTuple(), GL11.GL_FLOAT, 0, 0); } else { GL11.glDisableClientState(GL11.GL_COLOR_ARRAY); } }
public static FloatBufferData convertQuadVerticesToTriangles(final FloatBufferData vertices) { final int dims = vertices.getValuesPerTuple(); if (dims != 2 && dims != 3) { throw new IllegalArgumentException(
public void setupVertexData(final FloatBufferData vertexBufferData) { final GL gl = GLContext.getCurrentGL(); final FloatBuffer vertexBuffer = vertexBufferData != null ? vertexBufferData.getBuffer() : null; if (vertexBuffer == null) { if (gl.isGL2GL3()) { gl.getGL2GL3().glDisableClientState(GLPointerFunc.GL_VERTEX_ARRAY); } } else { if (gl.isGL2GL3()) { gl.getGL2GL3().glEnableClientState(GLPointerFunc.GL_VERTEX_ARRAY); } vertexBuffer.rewind(); if (gl.isGL2ES1()) { gl.getGL2ES1().glVertexPointer(vertexBufferData.getValuesPerTuple(), GL.GL_FLOAT, 0, vertexBuffer); } } }
public void setupColorData(final FloatBufferData colorBufferData) { final GL gl = GLContext.getCurrentGL(); final FloatBuffer colorBuffer = colorBufferData != null ? colorBufferData.getBuffer() : null; if (colorBuffer == null) { if (gl.isGL2GL3()) { gl.getGL2GL3().glDisableClientState(GLPointerFunc.GL_COLOR_ARRAY); } } else { if (gl.isGL2GL3()) { gl.getGL2GL3().glEnableClientState(GLPointerFunc.GL_COLOR_ARRAY); } colorBuffer.rewind(); if (gl.isGL2ES1()) { gl.getGL2ES1().glColorPointer(colorBufferData.getValuesPerTuple(), GL.GL_FLOAT, 0, colorBuffer); } } }
/** * Check an incoming TexCoords object for null and correct size. * * @param tc * @param vertexCount * @param perVert * @return tc if it is not null and the right size, otherwise it will be a new TexCoords object. */ public static FloatBufferData ensureSize(final FloatBufferData tc, final int vertexCount, final int coordsPerVertex) { if (tc == null) { return new FloatBufferData(BufferUtils.createFloatBuffer(vertexCount * coordsPerVertex), coordsPerVertex); } if (tc.getBuffer().limit() == coordsPerVertex * vertexCount && tc.getValuesPerTuple() == coordsPerVertex) { tc.getBuffer().rewind(); return tc; } else if (tc.getBuffer().limit() == coordsPerVertex * vertexCount) { tc.setValuesPerTuple(coordsPerVertex); } else { return new FloatBufferData(BufferUtils.createFloatBuffer(vertexCount * coordsPerVertex), coordsPerVertex); } return tc; } }
src.getValuesPerTuple()); setCoords(KEY_TextureCoordsPrefix + toIndex, dest);
public void setupVertexDataVBO(final FloatBufferData data) { final GL gl = GLContext.getCurrentGL(); final RenderContext context = ContextManager.getCurrentContext(); final RendererRecord rendRecord = context.getRendererRecord(); final int vboID = setupVBO(data, context); if (vboID != 0) { if (gl.isGL2GL3()) { gl.getGL2GL3().glEnableClientState(GLPointerFunc.GL_VERTEX_ARRAY); } JoglRendererUtil.setBoundVBO(rendRecord, vboID); if (gl.isGL2ES1()) { gl.getGL2ES1().glVertexPointer(data.getValuesPerTuple(), GL.GL_FLOAT, 0, 0); } } else { if (gl.isGL2GL3()) { gl.getGL2GL3().glDisableClientState(GLPointerFunc.GL_VERTEX_ARRAY); } } }
public void setupColorDataVBO(final FloatBufferData data) { final GL gl = GLContext.getCurrentGL(); final RenderContext context = ContextManager.getCurrentContext(); final RendererRecord rendRecord = context.getRendererRecord(); final int vboID = setupVBO(data, context); if (vboID != 0) { if (gl.isGL2GL3()) { gl.getGL2GL3().glEnableClientState(GLPointerFunc.GL_COLOR_ARRAY); } JoglRendererUtil.setBoundVBO(rendRecord, vboID); if (gl.isGL2ES1()) { gl.getGL2ES1().glColorPointer(data.getValuesPerTuple(), GL.GL_FLOAT, 0, 0); } } else { if (gl.isGL2GL3()) { gl.getGL2GL3().glDisableClientState(GLPointerFunc.GL_COLOR_ARRAY); } } }