2010-09-19 42 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