C++ Can';t在VS2015上绘制路径,但代码在VS2010上运行良好

C++ Can';t在VS2015上绘制路径,但代码在VS2010上运行良好,c++,visual-studio-2010,opengl,visual-studio-2015,glut,C++,Visual Studio 2010,Opengl,Visual Studio 2015,Glut,我用的是内特·罗宾斯。我一直在使用VS2015和VS2010替代系统进行开发。我在5个节点上创建了Dijkestra的模拟,最终输出是从源节点到目标节点的最短路径,以红色虚线打印 然而,经过几次更改后,代码根本无法在VS2015上打印虚线 同样的代码在VS2010上完美地工作 屏幕截图 Visual Studio 2015 VisualStudio2010 代码:- void dijkstra(int s) { int i, k, mini; int visited[GRAP

我用的是内特·罗宾斯。我一直在使用VS2015和VS2010替代系统进行开发。我在5个节点上创建了Dijkestra的模拟,最终输出是从源节点到目标节点的最短路径,以红色虚线打印

然而,经过几次更改后,代码根本无法在VS2015上打印虚线

同样的代码在VS2010上完美地工作

屏幕截图

Visual Studio 2015

VisualStudio2010

代码:-

void dijkstra(int s) {
    int i, k, mini;
    int visited[GRAPHSIZE];

    for (i = 1; i <= n; ++i) {
        d[i] = INFINITY;
        prev[i] = -1;
        visited[i] = 0;
        dummypath[i] = -1;
    }

    d[s] = 0;

    for (k = 1; k <= n; ++k) {
        mini = -1;
        for (i = 1; i <= n; ++i)
            if (!visited[i] && ((mini == -1) || (d[i] < d[mini])))
                mini = i;

        visited[mini] = 1;

        for (i = 1; i <= n; ++i)
            if (dist[mini][i]) {
                if (d[mini] + dist[mini][i] < d[i]) {
                    d[i] = d[mini] + dist[mini][i];
                    prev[i] = mini;
                }
            }
    }
}

void callPath(int a, int b) {

    std::cout << "Source :" << a << std::endl << "Dest :" << b << std::endl;
    int i, j, k;
    int u, v, w, dest, src;
    for (i = 0;i<GRAPHSIZE;i++) {
        getPath[i] = '\0';
        path[i] = '\0';

    }
    src = a;
    dest = b;

    dijkstra(src);

    destpath(dest);

    k = 0;
    std::cout << "Path" << std::endl;
    while (path[k] != '\0') {
        getPath[k] = path[k];
        std::cout << getPath[k] << std::endl;
        k++;
    }
}

void display4() {

    if (a == b) {
        if (a == 1) {
            getFinalCube1();
            glColor3f(0.0, 0.0, 1.0);
            drawString(10, 295, 0, "Source");
            drawString(10, 210, 0, "Destination");
            glFlush();
        }
        else if (a == 2) {
            getFinalCube2();
            glColor3f(0.0, 0.0, 1.0);
            drawString(110, 460, 0, "Source");
            drawString(110, 375, 0, "Destination");
            glFlush();
        }
        else if (a == 3) {
            getFinalCube3();
            glColor3f(0.0, 0.0, 1.0);
            drawString(285, 460, 0, "Source");
            drawString(285, 375, 0, "Destination");
            glFlush();
        }
        else if (a == 4) {
            getFinalCube4();
            glColor3f(0.0, 0.0, 1.0);
            drawString(110, 130, 0, "Source");
            drawString(110, 45, 0, "Destination");
            glFlush();
        }
        else {
            getFinalCube5();
            glColor3f(0.0, 0.0, 1.0);
            drawString(285, 130, 0, "Source");
            drawString(285, 45, 0, "Destination");
            glFlush();
        }
        glFlush();
    }
    else {
        glColor3f(0.0, 0.0, 1.0);
        if (a == 1)
            drawString(10, 295, 0, "Source");
        else if (a == 2)
            drawString(110, 460, 0, "Source");
        else if (a == 3)
            drawString(285, 460, 0, "Source");
        else if (a == 4)
            drawString(110, 130, 0, "Source");
        else if (a == 5)
            drawString(285, 130, 0, "Source");

        if (b == 1)
            drawString(10, 210, 0, "Destination");
        else if (b == 2)
            drawString(110, 375, 0, "Destination");
        else if (b == 3)
            drawString(285, 375, 0, "Destination");
        else if (b == 4)
            drawString(110, 45, 0, "Destination");
        else if (b == 5)
            drawString(285, 45, 0, "Destination");

        i = 0;
        while (getPath[i + 1] != '\0') {
            if (getPath[i] == 1) {
                getFinalCube1();
                glFlush();
                if (getPath[i + 1] == 2) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 60) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(110 + x, 290 + y, 0);
                        glVertex3f(125 + x, 307.5 + y, 0);
                        glVertex3f(130 + x, 302.5 + y, 0);
                        glVertex3f(115 + x, 285 + y, 0);
                        glVertex3f(110 + x, 290 + y, 0);
                        y = y + 33;
                        x = x + 25;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 100; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube2();
                    glFlush();
                }
                else if (getPath[i + 1] == 3) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 31) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(112.5 + x, 250 + y, 0);
                        glVertex3f(135 + x, 265 + y, 0);
                        glVertex3f(137.5 + x, 260 + y, 0);
                        glVertex3f(115 + x, 245 + y, 0);
                        glVertex3f(112.5 + x, 250 + y, 0);
                        y = y + 25;
                        x = x + 48;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 100; k++) {
                            delay();
                        }
                        glFlush();
                    }

                    getFinalCube3();
                    glFlush();
                }
                else if (getPath[i + 1] == 4) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 60) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(65 + x, 220 + y, 0);
                        glVertex3f(80 + x, 200 + y, 0);
                        glVertex3f(75 + x, 195 + y, 0);
                        glVertex3f(60 + x, 215 + y, 0);
                        glVertex3f(65 + x, 220 + y, 0);
                        y = y - 33;
                        x = x + 25;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube4();
                    glFlush();
                }
                else {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 40) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(95 + x, 210 + y, 0);
                        glVertex3f(117.5 + x, 197.5 + y, 0);
                        glVertex3f(115 + x, 192.5 + y, 0);
                        glVertex3f(92.5 + x, 205 + y, 0);
                        glVertex3f(95 + x, 210 + y, 0);
                        y = y - 32;
                        x = x + 56;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }

                    getFinalCube5();
                    glFlush();
                }
                glFlush();
            }
            else if (getPath[i] == 2) {
                getFinalCube2();
                glFlush();
                if (getPath[i + 1] == 1) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 60) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(120 + x, 375 + y, 0);
                        glVertex3f(125 + x, 370 + y, 0);
                        glVertex3f(110 + x, 350 + y, 0);
                        glVertex3f(105 + x, 355 + y, 0);
                        glVertex3f(120 + x, 375 + y, 0);
                        y = y - 25;
                        x = x - 18;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 100; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube1();
                    glFlush();
                }
                else if (getPath[i + 1] == 3) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 50) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(212.5 + x, 445 + y, 0);
                        glVertex3f(237.5 + x, 445 + y, 0);
                        glVertex3f(237.5 + x, 438 + y, 0);
                        glVertex3f(212.5 + x, 438 + y, 0);
                        glVertex3f(212.5 + x, 445 + y, 0);
                        y = y;
                        x = x + 30;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube3();
                    glFlush();
                }
                else if (getPath[i + 1] == 4) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 35) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(135 + x, 380 + y, 0);
                        glVertex3f(137.5 + x, 355 + y, 0);
                        glVertex3f(142.5 + x, 359 + y, 0);
                        glVertex3f(140 + x, 383.5 + y, 0);
                        glVertex3f(135 + x, 380 + y, 0);
                        y = y - 70;
                        x = x + 5;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube4();

                    glFlush();
                }
                else {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 31) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(182.5 + x, 367.5 + y, 0);
                        glVertex3f(195 + x, 345 + y, 0);
                        glVertex3f(190 + x, 342.5 + y, 0);
                        glVertex3f(177.5 + x, 365 + y, 0);
                        glVertex3f(182.5 + x, 367.5 + y, 0);
                        y = y - 66;
                        x = x + 37;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 100; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube5();
                    glFlush();
                }
                glFlush();
            }
            else if (getPath[i] == 3) {
                getFinalCube3();
                glFlush();
                if (getPath[i + 1] == 1) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 31) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(297.5 + x, 382.5 + y, 0);
                        glVertex3f(275 + x, 372.5 + y, 0);
                        glVertex3f(277.5 + x, 367.5 + y, 0);
                        glVertex3f(300 + x, 377.5 + y, 0);
                        glVertex3f(297.5 + x, 382.5 + y, 0);
                        y = y - 25;
                        x = x - 50;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 100; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube1();
                    glFlush();
                }
                else if (getPath[i + 1] == 2) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 60) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(290 + x, 385 + y, 0);
                        glVertex3f(287.5 + x, 380 + y, 0);
                        glVertex3f(265 + x, 387.5 + y, 0);
                        glVertex3f(267.5 + x, 392.5 + y, 0);
                        glVertex3f(290 + x, 385 + y, 0);
                        y = y + 6.25;
                        x = x - 30;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 100; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube2();
                    glFlush();
                }
                else if (getPath[i + 1] == 4) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 31) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(295 + x, 372.5 + y, 0);
                        glVertex3f(282.5 + x, 350 + y, 0);
                        glVertex3f(287.5 + x, 347.5 + y, 0);
                        glVertex3f(300 + x, 370 + y, 0);
                        glVertex3f(295 + x, 372.5 + y, 0);
                        y = y - 66.25;
                        x = x - 37.5;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 100; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube4();
                    glFlush();
                }
                else {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 35) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(310 + x, 385 + y, 0);
                        glVertex3f(313 + x, 360 + y, 0);
                        glVertex3f(317.5 + x, 362.5 + y, 0);
                        glVertex3f(315 + x, 387.5 + y, 0);
                        glVertex3f(310 + x, 385 + y, 0);
                        y = y - 70;
                        x = x + 5;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube5();

                    glFlush();
                }
                glFlush();
            }
            else if (getPath[i] == 4) {
                getFinalCube4();
                glFlush();
                if (getPath[i + 1] == 1) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 45) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(127.5 + x, 115 + y, 0);
                        glVertex3f(112.5 + x, 135 + y, 0);
                        glVertex3f(107.5 + x, 132.5 + y, 0);
                        glVertex3f(122.5 + x, 112.5 + y, 0);
                        glVertex3f(127.5 + x, 115 + y, 0);
                        y = y + 31.25;
                        x = x - 25;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube1();
                    glFlush();
                }
                else if (getPath[i + 1] == 2) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 35) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(210 + x, 125 + y, 0);
                        glVertex3f(207.5 + x, 155 + y, 0);
                        glVertex3f(212.5 + x, 157.5 + y, 0);
                        glVertex3f(215 + x, 127.5 + y, 0);
                        glVertex3f(210 + x, 125 + y, 0);
                        y = y + 70;
                        x = x - 5;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube2();
                    glFlush();
                }
                else if (getPath[i + 1] == 3) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 22) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(210 + x, 125 + y, 0);
                        glVertex3f(222.5 + x, 145 + y, 0);
                        glVertex3f(226 + x, 138 + y, 0);
                        glVertex3f(215 + x, 120 + y, 0);
                        glVertex3f(210 + x, 125 + y, 0);
                        y = y + 45;
                        x = x + 25;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }

                    getFinalCube3();
                    glFlush();
                }
                else {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 50) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(180 + x, 50 + y, 0);
                        glVertex3f(205 + x, 50 + y, 0);
                        glVertex3f(205 + x, 42.5 + y, 0);
                        glVertex3f(180 + x, 42.5 + y, 0);
                        glVertex3f(180 + x, 50 + y, 0);
                        y = y;
                        x = x + 40;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube5();
                    glFlush();
                }
                glFlush();
            }
            else {
                getFinalCube5();
                glFlush();
                if (getPath[i + 1] == 1) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 30) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(315 + x, 120 + y, 0);
                        glVertex3f(287.5 + x, 132.5 + y, 0);
                        glVertex3f(282.5 + x, 127.5 + y, 0);
                        glVertex3f(310 + x, 115 + y, 0);
                        glVertex3f(315 + x, 120 + y, 0);
                        y = y + 25;
                        x = x - 45;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }

                    getFinalCube1();
                    glFlush();
                }
                else if (getPath[i + 1] == 2) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 30) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(362.5 + x, 130 + y, 0);
                        glVertex3f(350 + x, 150 + y, 0);
                        glVertex3f(345 + x, 147.5 + y, 0);
                        glVertex3f(357.5 + x, 127.5 + y, 0);
                        glVertex3f(362.5 + x, 130 + y, 0);
                        y = y + 60;
                        x = x - 35;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }

                    getFinalCube2();
                    glFlush();
                }
                else if (getPath[i + 1] == 3) {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 35) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(385 + x, 125 + y, 0);
                        glVertex3f(382.5 + x, 155 + y, 0);
                        glVertex3f(387.5 + x, 157.5 + y, 0);
                        glVertex3f(390 + x, 127.5 + y, 0);
                        glVertex3f(385 + x, 125 + y, 0);
                        y = y + 70;
                        x = x - 5;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }
                    getFinalCube3();
                    glFlush();
                }
                else {
                    x = 0;
                    y = 0;
                    x = m[i][i + 1] * y;
                    for (j = 0; j < 125; j = j + 60) {
                        glBegin(GL_POLYGON);
                        glColor3f(1.0, 0.0, 0.0);
                        glVertex3f(295 + x, 95 + y, 0);
                        glVertex3f(270 + x, 90 + y, 0);
                        glVertex3f(272.5 + x, 85 + y, 0);
                        glVertex3f(297.5 + x, 90 + y, 0);
                        glVertex3f(295 + x, 95 + y, 0);
                        y = y - 5;
                        x = x - 35;

                        glFlush();
                        glEnd();
                        for (k = 0; k <= 300; k++) {
                            delay();
                        }
                        glFlush();
                    }

                    getFinalCube4();
                    glFlush();
                }
                glFlush();
            }
            i++;
            glFlush();
        }
    }
    glFlush();
}
void dijkstra(int s){
inti,k,mini;
int访问[图形化];

对于(i=1;我也更改了框的颜色(黄色->绿色)。另外:您是否在同一台机器上执行这两个版本?否则,GPU/OS配置/任何东西也可能有问题。将代码剥离到相关部分也很好。目前代码非常长,很难确定虚线的绘制位置。是的,昨天我在同一台机器上安装了VS2010…我不知道为什么在VS2015中框没有改变颜色。我在两个VS版本上运行相同的代码。为什么结果会根据IDE版本而变化…函数1-5使用绿色
glColor3f(0.0,1.0,0.0);
所以我认为这不是编译器的问题。还有
glColor3f(0.0,0.0,0.0)
重置颜色(为什么您可能看不到连接线)。然后调用
drawString
函数。这里可能有问题。