OpenGL - 在鼠标点击时绘制多边形,多边形总是在右边
Posted
技术标签:
【中文标题】OpenGL - 在鼠标点击时绘制多边形,多边形总是在右边【英文标题】:OpenGL - drawing polygon on mouse click, polygon is always on to the right 【发布时间】:2012-01-19 02:30:26 【问题描述】:对于我的一个课程,我正在使用 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( );
任何人都可以看到任何明显的错误吗? Size 是 float = to 32 但我觉得这与这个问题无关。
【问题讨论】:
你的 x 和 y 坐标是多少?您的 glOrtho() 调用将绘图区域设置为在两个方向上从 0 到 1 定义。您的 x 和 y 坐标是否在 -0.5 和 0.5 之间或类似的范围内? 哦,好的。我只是点击。但是我的窗口是 800 x 600,所以我要更改 ortho 以匹配它。 Opengl 对我来说是全新的。所以我什至不知道 Ortho 到底做了什么 好吧,如果您看到正在绘制的东西,那么您的 x 和 y 显然接近正确。如果没有关于您传入的坐标的更多信息,我不会只是更改 glOrtho()。您可以从打印 x 和 y 值开始,并在进行任何更改之前查看它们是什么。看看你能不能理解为什么它们是第一。 【参考方案1】:您需要将鼠标的 X 和 Y 坐标归一化为您的正射坐标...为此您可以这样做 x1 = x/屏幕重量 y1 = y/屏幕高度 x1 和 y1 新变量和 x , y 是鼠标参数...
【讨论】:
以上是关于OpenGL - 在鼠标点击时绘制多边形,多边形总是在右边的主要内容,如果未能解决你的问题,请参考以下文章
OpenGL / C++ - 如何在鼠标点击时填充一个点周围的区域?