Tôi có dòng mã này:Java: openGL: JOGL: Điều gì xảy ra sau hậu trường khi tôi gọi phương thức display()?
renderableObject.renderObject(gl, glu);
Điều này dẫn tới một danh sách lớn của các đối tượng được đưa ra bởi OpenGL, tuy nhiên nó chỉ hoạt động khi sử dụng như sau:
@Override
public void display(GLAutoDrawable drawable)
{
renderableObject.renderObject(gl, glu);
}
Nếu tôi gọi là dòng bên ngoài phương thức hiển thị ghi đè, tôi nhận được Ngoại lệ nói rằng không có glContext trên luồng hiện tại, thực sự nếu tôi gọi bất kỳ lệnh vẽ gl nào bên ngoài phương pháp này, tôi nhận được ngoại lệ tương tự
lý tưởng là tôi muốn tạo nhiều danh sách hiển thị s một lần, sau đó render chúng mỗi frame với danh sách hiển thị lẻ được tái tạo định kỳ. Tuy nhiên tôi phải đi qua phương thức display() đơn này có nghĩa là tôi sẽ phải kiểm tra mọi frame nếu danh sách hiển thị đã được tạo, hoặc cần thay đổi ... 60 lần một giây! những gì một sự lãng phí năng lượng xử lý khi tôi có thể xử lý chúng một cách riêng biệt một lần khi cần thiết. Vì vậy, bất cứ điều gì gọi phương thức display(), tôi muốn có thể sao chép nó cho phép tôi tạo ra rất nhiều phương pháp hiển thị tùy chỉnh của riêng tôi, mà không phải trải qua một phương pháp này cho mọi thứ!
Vì vậy, có một cuộc gọi gl đơn giản mà tôi có thể tự làm?
đằng sau hậu trường JOGL đang thực hiện toàn bộ công việc. Nó đang tạo ra một GLContext, và làm cho nó hiện tại cho GLCanvas cho luồng hiện tại. ------- Tôi không thể tự mình làm điều này? – Troyseph
Sebastian Troy, bạn có thể nhưng những gì nó làm là không thực sự tầm thường. Bạn có thể thực hiện các hoạt động tối thiểu nghiêm ngặt (lấy GLContext từ GLAutoDrawable và làm cho nó hiện tại) nhưng hãy nhớ rằng JOGL chứa rất nhiều điều thú vị và cách giải quyết giúp nó an toàn hơn OpenGL thuần túy trong C hoặc với một ràng buộc khác trong Java, C#, Python, ... Hơn nữa, nó thực sự dễ dàng để làm hỏng hiệu suất của bạn nếu bạn làm điều gì đó xấu. Khi tôi chuyển Ardor3D sang JOGL 2, tôi phát hiện ra hơn makeCurrent() vô dụng được gọi một lần, việc loại bỏ cuộc gọi này đã cho tôi một sự thúc đẩy rất lớn khi v-sync bị tắt. – gouessej