2010-06-06 40 views
7

Tôi có cảnh OpenGL với hệ tọa độ trên cùng bên trái. Khi tôi glScale nó phóng to từ (0,0) trên cùng bên trái. Tôi muốn nó phóng to từ tọa độ của chuột (liên quan đến khung OGL). Làm thế nào được thực hiện? Cảm ơnThuật toán để phóng to chuột (OpenGL)

Trả lời

10

Tôi tin rằng điều này có thể được thực hiện trong bốn bước:

  1. Tìm x và y tọa độ của chuột sử dụng bất cứ hoạt động hệ thống cửa sổ của bạn (tức thị trường bất động hoặc SDL) có cho rằng, và sử dụng gluUnProject để có được tọa độ đối tượng tương ứng với những cửa sổ phối
  2. Dịch bởi (x, y, 0) để đưa nguồn gốc tại những tọa độ
  3. Scale bởi vector mong muốn của bạn (i, j, k)
  4. Dịch bởi (- x, -y, 0) để đặt nguồn gốc trở lại ở đầu l eft
3

Tôi đã phóng to bằng cách sử dụng ánh sáng. Bộ xương của giải pháp của tôi là

glOrtho (ban đầu viewport x, y & kích thước)
glcalllist (danh sách hiển thị của tôi)
làm
.
.
vòng lặp để dần dần đi đến tọa độ viewrport cuối cùng/kích thước. Thực hiện yêu cầu về thời gian và FPS của bạn
.
.
glOrtho (thức viewport x, y & kích thước)
glcalllist (danh sách hiển thị của tôi)
làm

tôi hy vọng bạn sẽ có được ý tưởng chung. Có rất ít phương pháp khác để đạt được điều này, nhưng tôi thấy làm rõ phương pháp dễ hiểu nhất.