2010-12-23 185 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

相关问题