Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ glut窗口不显示任何内容_C++_Opengl - Fatal编程技术网

C++ glut窗口不显示任何内容

C++ glut窗口不显示任何内容,c++,opengl,C++,Opengl,我正在尝试使用freeglut创建一个简单的项目。嗯,我以前的所有项目都在工作,但新的项目在窗口中并没有显示任何内容。我不明白为什么 我初始化了过剩 int main(int argc, char* argv[]) { cout<<"Initializing project...."<<endl; glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | G

我正在尝试使用freeglut创建一个简单的项目。嗯,我以前的所有项目都在工作,但新的项目在窗口中并没有显示任何内容。我不明白为什么

我初始化了过剩

int main(int argc, char* argv[])
{
    cout<<"Initializing project...."<<endl;

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA | GLUT_MULTISAMPLE);
    glutInitContextVersion(3, 3);
    glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);
    glutInitContextFlags(GLUT_COMPATIBILITY_PROFILE);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(800, 800);
    glutCreateWindow("PROJECT");

    glewExperimental = true; 
    if (glewInit() != GLEW_OK) {
        fprintf(stderr, "Failed to initialize GLEW\n");
        return -1;
    }

    if (glewIsSupported("GL_VERSION_3_3"))
        cout<<"SUCCESS: Opengl 3.3 supported"<<endl;
    else {
        cout<<"FAIL: Opengl 3.3 not supported"<<endl;
        getchar();
        return 1;
    }

    glViewport(0, 0, 800, 800);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();    
    gluPerspective(45.0f, 1.0, 0.5f ,150.0f);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glClearColor(0.0, 0.0, 0.0, 1.0);

    glutSetCursor(GLUT_CURSOR_NONE);

    cout<<"INIT: functions binding....";
    glutDisplayFunc(render);
    glutIdleFunc(render);
    cout<<"SUCCESS"<<endl;

    cout<<"GLUT STARTS NOW!"<<endl;

    glutMainLoop();

    cout<<"GLUT WINDOW CLOSED!"<<endl;
    cout<<"Cleaning...."<<endl;

    cout<<"Press any ENTER to exit..."<<endl;
    getchar();

    return 0;
}

但它什么也没表现出来。问题是什么?

的第3和第4个参数表示用于剪裁的
zNear
zFar
。当您将其设置为
0.5~150
时,传递给
glVertex3f
的z值将发生更改,因为在OpenGL中,默认情况下我们查看的是z的负方向。您可以尝试类似于
glVertex3f(0.1,0.5,-10)

此外,在我的平台上,我还必须对这一行
glutInitContextVersion(3,3)进行注释使其工作。这是freeglut的一个扩展,在我的经验中我很少使用它。也许你也可以在不影响最终结果的情况下删除该行

void render()
{
    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glBegin(GL_LINES);
    glColor3f(1.0, 0.0, 1.0);
    glVertex3f(0.1, 0, 0);
    glVertex3f(0.1, 0.5, 0);
    glVertex3f(0.5, 0.5, 0);
    glVertex3f(0.5, 0.0, 0);
    glEnd();

    glutSwapBuffers();
}