2010-09-15 37 views
0

我只是想製作一個程序,它顯示一個窗口中有一個框,但是當我運行該程序時,我只能得到5次運行中的窗口顯示。每次執行命令行都會給出適當的響應,並且我在屏幕底部的gnome面板上看到窗口的標題,但窗口本身在大多數時間是不可見的。使用過量創建窗口,但程序不一致

我完全不知道原因可能在哪裏,我想開始尋找。有什麼建議?用gcc main.c中-lglut

我編譯和運行:

#include <stdio.h> 
#include <GL/freeglut.h> 

void keyb(unsigned char key, int x, int y); 

//Window identifier 
static int win; 

main(int argc, char **argv){ 
    //Initialization 
    glutInit(&argc, argv); 
    glutInitWindowSize(500,500); 
    glutInitWindowPosition(100,100); 
    win = glutCreateWindow("Test Window"); 

    //Callback 
    glutKeyboardFunc(keyb); 

    //OpenGL 
    glClearColor(0.0,0.0,0.0,0.0); 
    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(1.0,1.0,1.0); 
    glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0); 
    glBegin(GL_POLYGON); 
     glVertex2f(-0.5, -0.5); 
     glVertex2f(-0.5, 0.5); 
     glVertex2f(0.5, 0.5); 
     glVertex2f(0.5, -0.5); 
    glEnd(); 
    glFlush(); 

    //Enter main loop 
    glutMainLoop(); 

    return 0; 
} 

void keyb(unsigned char key, int x, int y){ 
    printf("Pressed key %c on coordinates %d, %d\n", key, x, y); 
    if(key == 'q'){ 
     printf("Got q, so qutting\n"); 
     glutDestroyWindow(win); 
     exit(0); 
    } 
} 

回答

2

你需要調用glutMainLoop之前註冊的顯示回調函數:

glutDisplayFunc(display); 

並把裏面display功能的渲染功能:

void display(){ 
    glClearColor(1,1,1,1); 
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 
    /* 
    Draw here 
    */ 
    glutSwapBuffers(); 
} 
+0

謝謝你這麼多! – oadams 2010-09-15 15:12:54

相關問題