2010-12-23 162 views
2

在OpenGL中創建一個簡單的程序來用鼠標繪製矩形。我的目標是點擊某處,拖動鼠標並創建一個矩形,就像在繪畫或任何其他設計程序中一樣。在OpenGL中將窗口座標轉換爲軸座標

我定義了諸如一個觀點:

glMatrixMode(GL_PROJECTION); 
glOrtho(AXIS_X_MIN, AXIS_X_MAX, AXIS_Y_MIN, AXIS_Y_MAX, AXIS_Z_MIN, AXIS_Z_MAX); 

和窗口這樣定義的:

glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT); 

我如何轉換的窗口座標裏面去從0到WINDOW_WIDTH和0至WINDOW_HEIGHT到軸座標和各個象限?

回答

5

嘗試:

double x = x_mouse/(double) WINDOW_WIDTH 
      * (AXIS_X_MAX - AXIS_X_MIN) + AXIS_X_MIN; 
double y = (1 - y_mouse/(double) WINDOW_HEIGHT) 
      * (AXIS_Y_MAX - AXIS_Y_MIN) + AXIS_Y_MIN; 
0

gluUnProject - 變換地圖窗口座標到對象座標。老實說,我幾乎不知道它是如何工作的。您可以點擊此處查看:OpenGL - gluUnProject

此外,如果你試試這個它應該工作:

float coorX = mouseX * width/WINDOW_WIDTH + AXIS_X_MIN; 
float coorY = mouseY * heigth/ WINDOW_HEIGHT + AXIS_Y_MIN; 
+0

你的替代版本的作品與glOrtho(),但不會與透視工作變換(而gluUnproject()會工作在這兩種情況下) – BrunoLevy 2015-11-11 10:35:45

相關問題