Почему моя местность не появляется в окне OpenGL? - PullRequest
0 голосов
/ 19 марта 2020

Когда я пытаюсь отобразить треугольные полосы в моей карте высот, они работают, когда читается необработанный файл, однако я не могу заставить их отображаться в окне. Что я делаю неправильно?

 bruteForce *b = new bruteForce();

    void render(void)
    {
        b->loadHeightField("height128.raw", 128);
        b->setScalingFactor(1.0f, 1.0f, 1.0f);
        b->render();
    }


    int main(int argc, char** argv)
    {
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DEPTH| GLUT_DOUBLE |GLUT_RGBA);
        glutInitWindowSize(800, 600);
        glutInitWindowPosition(500, 500);

        glutCreateWindow("Hello World!");

        glEnable(GL_DEPTH_TEST);

        glutDisplayFunc(render);

        glutMainLoop();
        return 1;
    }

Визуализировать вызов (я думаю, может быть, я здесь что-то не так делаю?)

void bruteForce::render() 
{
    unsigned char hcolor; //color of the height 

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

    glLoadIdentity();

    //loop through z axis
    for (int z = 0; z < getSize() - 1; z++)
    {
        //loop through the x axis
        glBegin(GL_TRIANGLE_STRIP);
        for (int x = 0; x < getSize(); x++) 
        {
            //create the first point in the triangle strip
            hcolor = getHeightColor(x, z);
            glColor3ub(hcolor, hcolor, hcolor);
            glVertex3f((float)x * scaleX, getHeight(x, z), (float)z * scaleZ);

            //create the next point in the triangle strip
            hcolor = getHeightColor(x, z + 1);
            glColor3ub(hcolor, hcolor, hcolor);
            glVertex3f((float)x * scaleX, getHeight(x, z + 1), (float)(z + 1) * scaleZ);
        }
        glEnd();
    }
    glFlush();
    glutSwapBuffers();
}
...