2008-11-12 40 views
7

Có cách nào để làm cho OpenGL biến đổi một vector chung tôi đưa nó với ma trận modelview hiện tại và lấy lại kết quả không?OpenGL: Nhiều vector người dùng bằng ma trận modelview?

Cách rõ ràng là truy vấn ma trận modelview và tự nhân bản nhưng Tôi gần như chắc chắn nên có cách để làm cho OpenGL làm điều này cho tôi.

Trả lời

5

Bạn nói đúng, bạn phải lấy ma trận modelview và tự biến đổi véc tơ.

Để xác nhận, hãy xem this link tại đoạn 9.120.

4

Cách tốt nhất là thực hiện phép tính bên ngoài OpenGL. The Matrix and Quaternions FAQ là tài nguyên tốt để tìm hiểu cách thực hiện các phép tính nếu bạn chưa biết. Bạn tìm nạp ma trận chế độ xem mô hình 4x4 như sau

float modelview[16]; 
glGetFloatv(GL_MODELVIEW_MATRIX, modelview); 
0

Có lẽ tốt nhất là thực hiện các phép biến đổi ở phía CPU. Cách duy nhất khác tôi có thể nghĩ là sử dụng cộng với một bóng đổ đỉnh mà không chỉ chuyển đổi modelview.

-1

Lý do tại sao opengl có thể sẽ không chỉ làm điều này cho bạn là vì phép tính không phải là một phần của đường dẫn hiển thị. và opengl (đối với hầu hết các phần) chỉ thực hiện các phép tính trong vòng lặp hiển thị. Vì vậy, nó không có ý nghĩa để cung cấp các loại giao diện đồng bộ.

Các vấn đề liên quan