summaryrefslogtreecommitdiffstats
path: root/src/net/java/games/jogl/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/java/games/jogl/util')
-rw-r--r--src/net/java/games/jogl/util/BufferUtils.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/net/java/games/jogl/util/BufferUtils.java b/src/net/java/games/jogl/util/BufferUtils.java
index 88afa1c8f..1572b749b 100644
--- a/src/net/java/games/jogl/util/BufferUtils.java
+++ b/src/net/java/games/jogl/util/BufferUtils.java
@@ -45,9 +45,15 @@ import java.util.*;
/** Utility routines for dealing with direct buffers. */
public class BufferUtils {
+ public static final int SIZEOF_DOUBLE = 8;
public static final int SIZEOF_FLOAT = 4;
public static final int SIZEOF_INT = 4;
+ public static DoubleBuffer newDoubleBuffer(int numElements) {
+ ByteBuffer bb = newByteBuffer(numElements * SIZEOF_DOUBLE);
+ return bb.asDoubleBuffer();
+ }
+
public static FloatBuffer newFloatBuffer(int numElements) {
ByteBuffer bb = newByteBuffer(numElements * SIZEOF_FLOAT);
return bb.asFloatBuffer();
@@ -64,6 +70,13 @@ public class BufferUtils {
return bb;
}
+ public static DoubleBuffer copyDoubleBuffer(DoubleBuffer orig) {
+ DoubleBuffer dest = newDoubleBuffer(orig.capacity());
+ orig.rewind();
+ dest.put(orig);
+ return dest;
+ }
+
public static FloatBuffer copyFloatBuffer(FloatBuffer orig) {
FloatBuffer dest = newFloatBuffer(orig.capacity());
orig.rewind();
@@ -71,6 +84,20 @@ public class BufferUtils {
return dest;
}
+ public static IntBuffer copyIntBuffer(IntBuffer orig) {
+ IntBuffer dest = newIntBuffer(orig.capacity());
+ orig.rewind();
+ dest.put(orig);
+ return dest;
+ }
+
+ public static ByteBuffer copyByteBuffer(ByteBuffer orig) {
+ ByteBuffer dest = newByteBuffer(orig.capacity());
+ orig.rewind();
+ dest.put(orig);
+ return dest;
+ }
+
private static Map bufferOffsetCache = Collections.synchronizedMap(new HashMap());
/** Creates an "offset buffer" for use with the