Package org.lwjgl.test.opengles.util

Source Code of org.lwjgl.test.opengles.util.ImmediateModeBuffer

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);
  }

}
TOP

Related Classes of org.lwjgl.test.opengles.util.ImmediateModeBuffer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.