2010-09-19 43 views
9

我正尝试在JOGL中使用这个class。它引用了BufferUtil,我找不到任何地方。我发现documentation,但没有实际的代码。 Eclipse不建议从任何地方导入它。我需要做些什么才能使用此代码?Java:BufferUtil?

+0

您已经添加到了'jogl.jar'文件的引用到您的项目? – 2010-09-19 17:54:20

+0

是的。其他JOGL类,如GL2,工作正常。 – 2010-09-19 17:56:25

+0

JOGL 2.0中没有jogl.jar,它被命名为jogl.all.jar。还有另一个没有AWT依赖的JAR。 – gouessej 2012-02-24 11:52:01

回答

-1

我认为他们拉回了BufferUtil(看起来它从来没有做过任何超级有用的事情),但由于代码只是分配了一个新的ByteBuffer,所以你不需要它。相反,只需做一个ByteBuffer unpackedPixels = ByteBuffer.allocate(packedPixels.length * bytesPerPixel);

还有一个更新的JOGL类,它有一些类似com.jogamp.opengl.util.texture.TextureIO的几个newTexture(...)方法。

+0

TextureIO完全取代了这个类正在尝试做的事情。只要忽略这个类并使用内置的TextureIO即可。 – Ricket 2010-09-23 20:30:50

+1

您的建议是错误的,因为您创建的间接字节缓冲区可能不符合本机顺序。我们应该总是使用助手类Buffers来避免这样做。分配不当的缓冲区可能会导致问题,有些方法仅支持直接的NIO缓冲区。 – gouessej 2012-02-24 11:51:00

2

JOGL doc相当于herehere。代替BufferUtil

使用Buffers:com.jogamp.common.nio.Buffers

TextureIO已被移动到包装com.jogamp.opengl.util.texture.TextureIO在JOGL 2.0。这不是一个新的类,它已经在JOGL 1.1.0中。

10

在NeHe JOGL教程中,有很多地方使用BufferUtil来创建缓冲区。使用JOGL 2.0,我们可以使用com.jogamp.common.nio.Buffers

例如,

BufferUtil.newIntBuffer(BUFSIZE)成为Buffers.newDirectIntBuffer(BUFSIZE) BufferUtil.newByteBuffer(BUFSIZE)成为Buffers.newDirectByteBuffer(BUFSIZE)

+0

而是使用com.jogamp.common.nio.Buffers来做到这一点。 GLBuffers主要用于内部使用,它甚至不应该在公共API中。 – gouessej 2012-02-24 11:54:25

+0

根据@ gouessej的评论我更新了这个答案,我们不应该使用'com.jogamp.opengl.util.GLBuffers'类。 – 2012-05-29 04:07:59