public static void updateVBO(final AbstractBufferData<? extends Buffer> data, final RendererRecord rendRecord,
final int vboID, final int offsetBytes) {
if (data.isNeedsRefresh()) {
final Buffer dataBuffer = data.getBuffer();
dataBuffer.rewind();
LwjglRendererUtil.setBoundVBO(rendRecord, vboID);
if (dataBuffer instanceof FloatBuffer) {
ARBBufferObject.glBufferSubDataARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, offsetBytes,
(FloatBuffer) dataBuffer);
} else if (dataBuffer instanceof ByteBuffer) {
ARBBufferObject.glBufferSubDataARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, offsetBytes,
(ByteBuffer) dataBuffer);
} else if (dataBuffer instanceof IntBuffer) {
ARBBufferObject.glBufferSubDataARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, offsetBytes,
(IntBuffer) dataBuffer);
} else if (dataBuffer instanceof ShortBuffer) {
ARBBufferObject.glBufferSubDataARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, offsetBytes,
(ShortBuffer) dataBuffer);
}
data.setNeedsRefresh(false);
}
}