对于我的一个类,我正在使用OpenGL创建一个简单的绘图程序,其中一个步骤是左键单击鼠标在窗口上创建一个多边形。我得到它来画它但是多边形总是在窗口右边的三分之一处结束我点击的位置右边
我的鼠标点击代码是......
//function called when mouse is clicked
void mouseClick(int button, int state, int x, int y){
float ptr1[3] = { x-size, y-size, 0 };
float ptr2[3] = { x-size, y+size, 0 };
float ptr3[3] = { x+size, y+size, 0 };
float ptr4[3] = { x+size, y-size, 0 };
if( button == GLUT_LEFT_BUTTON && state == GLUT_DOWN){//if the left mouse button is clicked
glColor3f ( 1.0, 1.0, 1.0); //set color to white ( remove later)
glOrtho (0.0, 1.0, 0.0, 1.0, -1.0, 1.0); //sets the window coordinates?
glBegin (GL_POLYGON); //start drawing a polygon
glVertex3fv (ptr1);
glVertex3fv (ptr2);
glVertex3fv (ptr3);
glVertex3fv (ptr4);
glEnd();
glFlush(); //flushes all commands to ensure polygon is drawn
}
//glutPostRedisplay( );
}
任何人都可以看到任何明显的错误吗?大小是一个浮点数= 32,但我觉得这与这个问题无关。
答案 0 :(得分:0)
您需要将鼠标的X和Y坐标标准化到您的正交...为此您可以执行此操作 x1 = x /屏幕重量 y1 = y /屏幕高度 x1和y1新变量和x,y是鼠标参数......