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?
Trả lời
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(...)
.
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
Đề 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
Tôi chạy vào cùng một vấn đề trong khi porting một ứng dụng 1.x JOGL để JOGL 2 và thấy BufferUtil phương pháp tương đương trong thư viện gluegen mới: com.jogamp.common.nio.Buffers
javadoc: http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/com/jogamp/common/nio/Buffers.html
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)
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
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'. –
Bạn đã thêm một tham chiếu đến file 'jogl.jar' để dự án của bạn? –
Có. Các lớp học JOGL khác, như GL2, hoạt động tốt. –
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