2010-09-19 4 views
9

Tôi đang cố sử dụng class với JOGL này. Nó tham chiếu đến BufferUtil, cái mà tôi không thể tìm thấy ở đâu cả. Tôi đã tìm thấy documentation, nhưng không có mã thực tế. Eclipse không gợi ý nhập nó từ bất cứ đâu. Tôi phải làm gì để có thể sử dụng mã này?Java: BufferUtil?

+0

Bạn đã thêm một tham chiếu đến file 'jogl.jar' để dự án của bạn? –

+0

Có. Các lớp học JOGL khác, như GL2, hoạt động tốt. –

+0

Không có jogl.jar trong JOGL 2.0, nó có tên là jogl.all.jar. Có một JAR khác không phụ thuộc AWT. – gouessej

Trả lời

-1

Tôi nghĩ rằng họ kéo BufferUtil một thời gian trở lại (có vẻ như nó không bao giờ làm bất cứ điều gì siêu hữu ích anyway) nhưng kể từ khi mã chỉ phân bổ một mới ByteBuffer, bạn không cần nó. Thay vào đó, chỉ cần thực hiện một số ByteBuffer unpackedPixels = ByteBuffer.allocate(packedPixels.length * bytesPerPixel);.

Ngoài ra còn có một lớp JOGL mới hơn có chức năng tương tự được gọi là com.jogamp.opengl.util.texture.TextureIO với một số phương pháp newTexture(...).

+0

TextureIO hoàn toàn thay thế chính xác những gì lớp này đang cố gắng thực hiện. Chỉ cần bỏ qua lớp này và sử dụng TextureIO có sẵn. – Ricket

+1

Đề nghị của bạn là sai bởi vì bạn tạo một bộ đệm byte gián tiếp có khả năng không tôn trọng thứ tự bản địa. Chúng ta nên luôn luôn sử dụng lớp đệm của trình trợ giúp để tránh làm việc đó. Bộ đệm được cấp phát không đúng có thể gây ra sự cố, một số phương thức chỉ hỗ trợ bộ đệm NIO trực tiếp. – gouessej

2

JOGL doc khá là herehere.

Sử dụng Buffers thay vì BufferUtil: com.jogamp.common.nio.Buffers

TextureIO đã được di chuyển vào gói com.jogamp.opengl.util.texture.TextureIO trong JOGL 2.0. Đây không phải là một lớp học mới, nó đã có trong JOGL 1.1.0.

10

Trong hướng dẫn NeHe cho JOGL, có nhiều nơi sử dụng BufferUtil để tạo bộ đệm. Với JOGL 2.0, chúng tôi có thể sử dụng com.jogamp.common.nio.Buffers để thay thế.

Ví dụ,

BufferUtil.newIntBuffer(BUFSIZE) trở thành Buffers.newDirectIntBuffer(BUFSIZE) BufferUtil.newByteBuffer(BUFSIZE) trở thành Buffers.newDirectByteBuffer(BUFSIZE)

+0

Thay vì sử dụng com.jogamp.common.nio.Buffers để làm điều đó. GLBuffers chủ yếu là để sử dụng nội bộ, nó thậm chí không nên được trong API công cộng. – gouessej

+0

Tôi đã cập nhật câu trả lời này theo nhận xét của @ gouessej rằng chúng tôi không nên sử dụng lớp 'com.jogamp.opengl.util.GLBuffers'. –