2010-09-19 9 views
9

Estoy tratando de usar este class con JOGL. Hace referencia a BufferUtil, que no puedo encontrar en ninguna parte. Encontré documentation, pero no código actual. Eclipse no sugiere importarlo desde ningún lado. ¿Qué debo hacer para poder usar este código?Java: BufferUtil?

+0

¿Ha añadido una referencia al archivo 'jogl.jar' a su proyecto? –

+0

Sí. Otras clases de JOGL, como GL2, funcionan bien. –

+0

No hay jogl.jar en JOGL 2.0, se llama jogl.all.jar. Hay otro JAR sin dependencia de AWT. – gouessej

Respuesta

-1

Creo que sacaron BufferUtil hace un tiempo (parece que nunca hizo nada súper útil de todos modos) pero como el código solo asigna un nuevo ByteBuffer, no lo necesita. Simplemente haga un ByteBuffer unpackedPixels = ByteBuffer.allocate(packedPixels.length * bytesPerPixel); en su lugar.

También hay una clase JOGL más nueva que hace algo similar llamado com.jogamp.opengl.util.texture.TextureIO con unos pocos métodos newTexture(...).

+0

TextureIO absolutamente reemplaza exactamente lo que esta clase está tratando de hacer. Simplemente ignore esta clase y use el TextureIO incorporado. – Ricket

+1

Su sugerencia es incorrecta porque crea un búfer de bytes indirectos que potencialmente no respeta el pedido original. Siempre debemos usar los Buffers de clase auxiliar para evitar hacerlo. Los búferes mal asignados pueden causar problemas, algunos métodos solo admiten búferes directos de NIO. – gouessej

2

JOGL doc es más bien here y here.

Uso Buffers en lugar de BufferUtil: com.jogamp.common.nio.Buffers

TextureIO se ha movido en el paquete com.jogamp.opengl.util.texture.TextureIO en JOGL 2.0. No es una clase nueva, ya estaba en JOGL 1.1.0.

10

En los tutoriales de NeHe para JOGL, hay muchos lugares que usan BufferUtil para crear los búferes. Con JOGL 2.0 podemos usar com.jogamp.common.nio.Buffers en su lugar.

Por ejemplo,

BufferUtil.newIntBuffer(BUFSIZE) convierte Buffers.newDirectIntBuffer(BUFSIZE) BufferUtil.newByteBuffer(BUFSIZE) convierte Buffers.newDirectByteBuffer(BUFSIZE)

+0

Bastante uso com.jogamp.common.nio.Buffers para hacer eso. GLBuffers es principalmente para uso interno, incluso no debería estar en la API pública. – gouessej

+0

Actualicé esta respuesta de acuerdo con el comentario de @ gouessej de que no deberíamos usar la clase 'com.jogamp.opengl.util.GLBuffers'. –