将 Glut 鼠标坐标转换为 opengl
Convert Glut mouse coordinates to opengl
我的屏幕尺寸为 1000x1000 像素,我正在尝试获取 opengl 坐标。我理解的OpenGL坐标系如下:
(-1,1) | (1,1)
|
--------(0,0)-------
|
|
(-1,-1) | (1,-1)
void mouse(int btn, int state, int x, int y){
float mx = x ;
float my = y ;
ox = (mx/1000 -0.5);
oy = -(my/1000 -0.5);
switch(btn){
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN){
printf("%f\n",mx);
printf("%f\n",my);
//p1->setPoint(x, y, 1.0);
}
break;
}
};
我的 window 分辨率是 1000x1000。当前行为跟踪鼠标但不完全。它落在靠近鼠标的位置,并且在接近 0,0 时更准确。我以为我必须将 - 0.5 更改为 -1 但最终翻转了所有内容。
void mouse(int btn, int state, int x, int y){
float mx = x ;
float my = y ;
ox = (mx/500-1.0);
oy = -(my/500 -1.0);
switch(btn){
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN){
printf("%f\n",mx);
printf("%f\n",my);
}
break;
}
};
ox = (glutx/(屏幕的一半 x) - 1
oy = -((过剩/(屏幕 y 的一半) - 1)
我的屏幕尺寸为 1000x1000 像素,我正在尝试获取 opengl 坐标。我理解的OpenGL坐标系如下:
(-1,1) | (1,1)
|
--------(0,0)-------
|
|
(-1,-1) | (1,-1)
void mouse(int btn, int state, int x, int y){
float mx = x ;
float my = y ;
ox = (mx/1000 -0.5);
oy = -(my/1000 -0.5);
switch(btn){
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN){
printf("%f\n",mx);
printf("%f\n",my);
//p1->setPoint(x, y, 1.0);
}
break;
}
};
我的 window 分辨率是 1000x1000。当前行为跟踪鼠标但不完全。它落在靠近鼠标的位置,并且在接近 0,0 时更准确。我以为我必须将 - 0.5 更改为 -1 但最终翻转了所有内容。
void mouse(int btn, int state, int x, int y){
float mx = x ;
float my = y ;
ox = (mx/500-1.0);
oy = -(my/500 -1.0);
switch(btn){
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN){
printf("%f\n",mx);
printf("%f\n",my);
}
break;
}
};
ox = (glutx/(屏幕的一半 x) - 1
oy = -((过剩/(屏幕 y 的一半) - 1)