58 lines
1.3 KiB
Java
58 lines
1.3 KiB
Java
package org.lwjgl.test.opengles.util;
|
|
|
|
import org.lwjgl.BufferUtils;
|
|
|
|
import java.nio.FloatBuffer;
|
|
|
|
/**
|
|
* Utility class that emulates immediate mode vertex data submission.
|
|
* Can be used to create VBO data.
|
|
*/
|
|
public final class ImmediateModeBuffer {
|
|
|
|
private FloatBuffer buffer;
|
|
|
|
public ImmediateModeBuffer(final int startSize) {
|
|
this.buffer = BufferUtils.createFloatBuffer(startSize);
|
|
}
|
|
|
|
private void checkSize(final int count) {
|
|
while ( buffer.remaining() < count ) {
|
|
final FloatBuffer newBuffer = BufferUtils.createFloatBuffer(buffer.capacity() << 1);
|
|
buffer.flip();
|
|
newBuffer.put(buffer);
|
|
buffer = newBuffer;
|
|
}
|
|
}
|
|
|
|
public FloatBuffer getBuffer() {
|
|
buffer.flip();
|
|
return buffer;
|
|
}
|
|
|
|
public void glVertex2f(final float x, final float y) {
|
|
checkSize(2);
|
|
buffer.put(x).put(y);
|
|
}
|
|
|
|
public void glVertex3f(final float x, final float y, final float z) {
|
|
checkSize(3);
|
|
buffer.put(x).put(y).put(z);
|
|
}
|
|
|
|
public void glVertex4f(final float x, final float y, final float z, final float w) {
|
|
checkSize(4);
|
|
buffer.put(x).put(y).put(z).put(w);
|
|
}
|
|
|
|
public void glNormal3f(final float x, final float y, final float z) {
|
|
checkSize(3);
|
|
buffer.put(x).put(y).put(z);
|
|
}
|
|
|
|
public void glTexCoord2f(final float s, final float t) {
|
|
checkSize(2);
|
|
buffer.put(s).put(t);
|
|
}
|
|
|
|
} |