10
votes

Java: Bufferutil?

J'essaie d'utiliser ce classe avec jogl. Il fait référence à Bufferutil, que je ne trouve nulle part. J'ai trouvé Documentation , mais pas de code réel. Eclipse ne suggère pas de l'importer de n'importe où. Que dois-je faire pour pouvoir utiliser ce code?


4 commentaires

Avez-vous ajouté une référence au fichier jogl.jar à votre projet?


Oui. Autres classes de Jogl, comme GL2, fonctionne bien.


Il n'y a pas de jogl.jar à Jogl 2.0, il s'appelle jogl.all.jar. Il y a un autre pot sans dépendance AWT.


jogl.all.jar a été renommé Jogl-All.jar


4 Réponses :


-1
votes

Je pense qu'ils ont tiré bufferutil un moment de retour (on dirait que cela n'a jamais rien fait de super utile de toute façon), mais puisque le code alloue simplement un nouveau bytebuffer , vous n'avez pas " t-il besoin. Il suffit de faire un bytebuffer déballedpixels = bytebuffer.Allocate (packedpixels.length * bytesperpixel); à la place.

Il y a aussi une nouvelle classe de jogl qui fait quelque chose de similaire appelé com.jogamp.opengl.util.texture.textureo avec quelques newTexture (...) méthodes.


2 commentaires

Textureio remplace absolument exactement ce que cette classe tente de faire. Ignorez simplement cette classe et utilisez la texture intégrée.


Votre suggestion est fausse parce que vous créez un tampon d'octet indirect potentiellement ne respectant pas l'ordre indigène. Nous devrions toujours utiliser les tampons de classe d'assistance pour éviter de le faire. Les tampons mal alloués peuvent causer des problèmes, certaines méthodes ne prend en charge que les tampons Nio directs.





10
votes

Dans NEHE Tutoriels pour JOGL, il existe de nombreux endroits en utilisant bufferutil pour créer les tampons. Avec JOGL 2.0, nous pouvons utiliser com.jogamp.common.nio.buffers à la place.

Par exemple,

bufferutil.Newintbuffer (bufsize) devient tampons.NewDirectTbuffer (bufsize) bufferutil.newbytebuffer (bufsize) devient tampons.newdirectbytebuffer (bufsize)


2 commentaires

Utilisez plutôt com.jogamp.common.nio.buffers pour le faire. Glbuffers est principalement à usage interne, il ne devrait même pas être dans l'API publique.


J'ai mis à jour cette réponse en fonction du commentaire de @ gouessej que nous ne devons pas utiliser com.jogamp.opengl.util.glougers classe.