diff --git a/build.xml b/build.xml
index c2fe2912..6160f3c8 100644
--- a/build.xml
+++ b/build.xml
@@ -266,6 +266,7 @@
+
diff --git a/src/java/org/lwjgl/BufferUtils.java b/src/java/org/lwjgl/BufferUtils.java
index d798168e..e18ab239 100644
--- a/src/java/org/lwjgl/BufferUtils.java
+++ b/src/java/org/lwjgl/BufferUtils.java
@@ -155,4 +155,41 @@ public final class BufferUtils {
return buffer.position() << getElementSizeExponent(buffer);
}
+ /** Fill buffer with zeros from position to remaining */
+ public static void zeroBuffer(ByteBuffer b) {
+ zeroBuffer0(b, b.position(), b.remaining());
+ }
+
+ /** Fill buffer with zeros from position to remaining */
+ public static void zeroBuffer(ShortBuffer b) {
+ zeroBuffer0(b, b.position()*2L, b.remaining()*2L);
+ }
+
+ /** Fill buffer with zeros from position to remaining */
+ public static void zeroBuffer(CharBuffer b) {
+ zeroBuffer0(b, b.position()*2L, b.remaining()*2L);
+ }
+
+ /** Fill buffer with zeros from position to remaining */
+ public static void zeroBuffer(IntBuffer b) {
+ zeroBuffer0(b, b.position()*4L, b.remaining()*4L);
+ }
+
+ /** Fill buffer with zeros from position to remaining */
+ public static void zeroBuffer(FloatBuffer b) {
+ zeroBuffer0(b, b.position()*4L, b.remaining()*4L);
+ }
+
+ /** Fill buffer with zeros from position to remaining */
+ public static void zeroBuffer(LongBuffer b) {
+ zeroBuffer0(b, b.position()*8L, b.remaining()*8L);
+ }
+
+ /** Fill buffer with zeros from position to remaining */
+ public static void zeroBuffer(DoubleBuffer b) {
+ zeroBuffer0(b, b.position()*8L, b.remaining()*8L);
+ }
+
+ /** Fill buffer with zeros from position to remaining */
+ private static native void zeroBuffer0(Buffer b, long off, long size);
}
diff --git a/src/native/common/org_lwjgl_BufferUtils.c b/src/native/common/org_lwjgl_BufferUtils.c
new file mode 100644
index 00000000..f551cff0
--- /dev/null
+++ b/src/native/common/org_lwjgl_BufferUtils.c
@@ -0,0 +1,5 @@
+#include "org_lwjgl_BufferUtils.h"
+
+JNIEXPORT void JNICALL Java_org_lwjgl_BufferUtils_zeroBuffer0(JNIEnv *env, jclass clazz, jobject buffer, jlong offset, jlong size) {
+ memset((char*)(*env)->GetDirectBufferAddress(env, buffer) + (size_t)offset, 0, (size_t)size);
+}
\ No newline at end of file