2013-12-11 1 views
0

저는 freeglut을 사용하여 간단한 프로젝트를 만들려고합니다. 이전의 모든 프로젝트는 이전에 작동했지만 새 창에서는 아무것도 보이지 않습니다. 나는 왜 그런지 이해하지 못한다.glut window에 아무것도 표시되지 않습니다.

가 나는 과잉에게 render

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

과 같은

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

기능을 초기화하지만 아무것도 표시되지 않습니다. 문제가 무엇입니까?

답변

1

gluPerspective의 세 번째 및 네 번째 매개 변수는 클리핑에 대해 zNearzFar을 의미합니다. 0.5~150으로 설정하면 glVertex3f으로 전달되는 z 값은 OpenGL에서 기본적으로 Z의 음수 방향을 조사하기 때문에 변경됩니다. glVertex3f(0.1, 0.5, -10)
또한 내 플랫폼에서이 라인을 glutInitContextVersion(3, 3);으로 설정해야 작동합니다. 그게 freeglut의 확장이고 나는 내 경험에서 그것을 거의 사용하지 않습니다. 어쩌면 최종 결과에 영향을 미치지 않고 해당 행을 제거 할 수도 있습니다.

관련 문제