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();
    }