在 OpenGL 中读取鼠标坐标单击
Read mouse coordinates click in OpenGL
当我点击屏幕上的一个点并用一个点标记它时,我试图读取鼠标坐标,但它不起作用。
float cx = 0, cy = 0;
glPushMatrix();
glPointSize(6.0f);
//Draw the points
glBegin(GL_POINTS);
cx = (((x * (maxx + minx))) / width) + minx;
cy = (((-1 * pow((y - height), width) * (maxy - miny)) / height ) + miny;
glVertex2f(cx , cy);
glEnd();
glPopMatrix();
这是一个大学练习,从屏幕上获取坐标的公式是:
Px和Py是mouseFunc传给这个函数的坐标。
w 和 h 是屏幕的宽度和高度(我从重塑中得到它)
maxx, maxy, minx, miny...是正坐标
所以,我的代码有什么问题?
鼠标功能(我已经测试过鼠标点击是否有效,确实如此):
void mouse(int button, int state, int x, int y){
switch(button){
case GLUT_LEFT_BUTTON:
if(state == GLUT_DOWN)
exerciseThree(x, y);
break;
}
glutPostRedisplay();
}
您没有正确执行您引用的公式。尝试
cx = x * (maxx - minx) / width + minx;
cy = (height - y) * (maxy - miny) / height + miny;
两个显着差异是第一个表达式中的 (maxx - minx)
,而您误读了第二行并认为上面一行的除数 w
是第二行的幂。
当我点击屏幕上的一个点并用一个点标记它时,我试图读取鼠标坐标,但它不起作用。
float cx = 0, cy = 0;
glPushMatrix();
glPointSize(6.0f);
//Draw the points
glBegin(GL_POINTS);
cx = (((x * (maxx + minx))) / width) + minx;
cy = (((-1 * pow((y - height), width) * (maxy - miny)) / height ) + miny;
glVertex2f(cx , cy);
glEnd();
glPopMatrix();
这是一个大学练习,从屏幕上获取坐标的公式是:
Px和Py是mouseFunc传给这个函数的坐标。 w 和 h 是屏幕的宽度和高度(我从重塑中得到它) maxx, maxy, minx, miny...是正坐标
所以,我的代码有什么问题?
鼠标功能(我已经测试过鼠标点击是否有效,确实如此):
void mouse(int button, int state, int x, int y){
switch(button){
case GLUT_LEFT_BUTTON:
if(state == GLUT_DOWN)
exerciseThree(x, y);
break;
}
glutPostRedisplay();
}
您没有正确执行您引用的公式。尝试
cx = x * (maxx - minx) / width + minx;
cy = (height - y) * (maxy - miny) / height + miny;
两个显着差异是第一个表达式中的 (maxx - minx)
,而您误读了第二行并认为上面一行的除数 w
是第二行的幂。