ALfloat floatv[3];
becomes
FloatBuffer floatv = createFloatBuffer(3);
In this example, createFloatBuffer is this utility method:
public FloatBuffer createFloatBuffer(int size) {
//allocate bytebuffer, using 4 bytes per float
ByteBuffer temp = ByteBuffer.allocateDirect(4*size);
temp.order(ByteOrder.nativeOrder());
return temp.asFloatBuffer();
}
1.2 Examples
Using the above FloatBuffer, you would typically use it like this (examples
taken from altest.c/ALTest.java):
1.2.1 Example 1
alGetListenerfv(AL_POSITION, floatv);
becomes
al.getListenerfv(AL.POSITION, Sys.getDirectBufferAddress(floatv));
1.2.2 Example 2
if (floatv[0] != 100.0)) {
becomes:
if (floatv.get(0) != 100.0f) {
1.2.3 Example 3
alGetListener3f(AL_POSITION, &floatv[0],
&floatv[1],
&floatv[2]);
becomes
al.getListener3f(AL.POSITION, Sys.getDirectBufferAddress(floatv),
Sys.getDirectBufferAddress(floatv) + 4,
Sys.getDirectBufferAddress(floatv) + 8);
the last case is a bit special, since we start of by getting the base
address of the buffer, and then add the datatype size to the base address
to get the address of that specific index. This is just how it has to
be in Java.