# JOGL FloatBuffer vs Buffers



## AlllquantorX (8. Feb 2013)

Bei der Suche habe ich unterscheidliche Ansätze gesehen um einen FloatBuffer (oder allgemein Buffer) zu erzeugen. Was genau ist der Unterschied zwischen

FloatBuffer f = Buffers.newDirectFloatBuffer(...)

und

FloatBuffer f = FloatBuffer.allocateXYZ(...)

und unter welchen Bedingungen ist das Eine oder das Andere zu bevorzugen


----------



## Marco13 (8. Feb 2013)

java.nio.FloatBuffer hat nur eine Methode zum allokieren, und die verwendet intern einen float[] array um den FloatBuffer zu repräsentieren. Da JOGL für (fast) alles aber _direct_ Buffers benötigt (also welche, die keinen float[] array enthalten, sondern praktisch einen "rohen Speicherblock"), gibt es von JOGL (und 1000 anderen Bibliotheken, die mit JNI zu tun haben ) Utility-Methoden, wie die in "Buffers". Man kann sich die Implementierung ansehen, und dort wird bei "newDirectFloatBuffer" sowas stehen wie

```
return ByteBuffer.allocateDirect(size*4).byteOrder(ByteOrder.nativeOrder()).asFloatBuffer();
```
und die "newDirectFloatBuffer" ist eine Abkürzung dafür. Im allgemeinen sollte man die Methoden verwenden, die direct buffers erstellen, außer vielleicht, wenn man genau weiß, dass der Buffer nicht für JOGL-Methoden verwendet werden soll, und/oder nicht direct sein muss.


----------



## AllquantorX (8. Feb 2013)

Super. Danke!


----------

