Visual studio OpenGl---使用左键和右键点击连接点
我已经做了一个星期的作业,似乎还没弄明白 分配的要点是在左键单击时将图形上的点连接起来。当您右键单击时,您可以创建一个点,但它没有连接到最后一个点(它是单独的,单独的)。当您再次单击左按钮时,它应连接到您所做的最后一点。我得到的点击工作,但它没有连接好。节目如下Visual studio OpenGl---使用左键和右键点击连接点,visual-studio,opengl,Visual Studio,Opengl,我已经做了一个星期的作业,似乎还没弄明白 分配的要点是在左键单击时将图形上的点连接起来。当您右键单击时,您可以创建一个点,但它没有连接到最后一个点(它是单独的,单独的)。当您再次单击左按钮时,它应连接到您所做的最后一点。我得到的点击工作,但它没有连接好。节目如下 glBegin(GL_LINES); for (int i=0 ; i<= numberPoints;i++) for(int j =0; j<=numberEdges; j++) {
glBegin(GL_LINES);
for (int i=0 ; i<= numberPoints;i++)
for(int j =0; j<=numberEdges; j++)
{
glVertex2fv(points[edges[i][0]]);
glVertex2fv(points[edges[i][1]]);
}
glEnd();
glBegin(GL_行);
对于(int i=0;i我最终得到了它!!!好的,我做的是取GL_行,只有一个带变量i的for循环。然后在左键单击中,我翻转边0,边1左右相等。因此边0是numberPoints,边1是previouspoints subscript。然后我取了previouspoints subscript=numberPoints行,并将其放在两条边之后。这是ga让我看看在每个点上连接的线
if(numberPoints>1)
{
glBegin(GL_LINES);
for (int i=0 ; i<numberEdges;i++)
{
glVertex2fv(points[edges[i][0]]);
glVertex2fv(points[edges[i][1]]);
}
}
glEnd();
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN)
{
points[numberPoints][0] = plotX;
points[numberPoints][1] = plotY;
edges[numberEdges][0] = numberPoints;
edges[numberEdges][1] = previousPointSubscript;
previousPointSubscript = numberPoints;
numberEdges++;
numberPoints++;
glutPostRedisplay();
glFlush();
}
if(numberPoints>1)
{
glBegin(GL_行);
对于(int i=0;缺少类似iLooks的部分代码。但一个明显的问题是,您正在将边
中每个条目的起点和终点设置为相同的值(numberPoints
).previousPointSubscript
的值与numberPoints
的值相同,您可以在其中对边
项进行赋值。我如何向您发送整个代码,以便您可以看到该问题。只要previousPointSubscript和numberPoints相同,就不是将最后一点连接到新点。如果一行的点和终点相同,该行退化为一个点。您可能希望在调试器中逐步完成整个过程,或添加一些日志记录,以便您可以跟踪代码的执行情况,并查看与预期逻辑不匹配的地方。
if(numberPoints>1)
{
glBegin(GL_LINES);
for (int i=0 ; i<numberEdges;i++)
{
glVertex2fv(points[edges[i][0]]);
glVertex2fv(points[edges[i][1]]);
}
}
glEnd();
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN)
{
points[numberPoints][0] = plotX;
points[numberPoints][1] = plotY;
edges[numberEdges][0] = numberPoints;
edges[numberEdges][1] = previousPointSubscript;
previousPointSubscript = numberPoints;
numberEdges++;
numberPoints++;
glutPostRedisplay();
glFlush();
}