2011-01-31 40 views
1

我有OpenGL項目,用於查找在Windows中編寫的凸包。在Ubuntu 10.10下運行OpenGL項目時出錯

現在我使用的是Ubuntu 10.10,我嘗試移植代碼(它是C++代碼)並運行它。

我看到,它應該這樣被編譯:

g++ convex.cpp -lm -lglut -lGLU -o convex_hull_project 

它編譯的文件,但是當我運行該文件./convex_hull_project啓動程序,顯示了冠軍,但沒有什麼 - 它只是碼頭對於底部任務線,當我點擊它 - 沒有任何顯示。 程序沒有窗口。 有什麼想法? 下面是一個使用OpenGL的東西代碼:

int main(int argc, char* argv[]) { 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH); // color, buffer 
    glutInitWindowPosition(100,100); 
    glutInitWindowSize(window_size_width,window_size_height); 
    glutCreateWindow("Convex hull"); 
    glutDisplayFunc(renderScene); 
    glutMouseFunc(mouse); 
    glutMainLoop(); 
    return 0; 
} 


void renderScene(void) { 

    // clear framebuffer 
    glClearColor(0.f,0.f,0.f,0.f); 
    glClear(GL_COLOR_BUFFER_BIT); 

    // set-up matrix 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(0,window_size_width,window_size_height,0,-1,1); 

    glViewport(0,0,window_size_width,window_size_height); 
     //drawing ... 
    } 

,包括有:

#include<GL/glut.h> 
#include<GL/glu.h> 
#include<stdio.h> 
#include<vector> 
#include<algorithm> 
#include<math.h> 
+0

因爲你得到的可執行文件,你的程序被編譯和鏈接,它只是沒有預期的工作 - 標題是誤導 – 2011-01-31 14:22:07

+0

你是對的,修復它:) – 2011-01-31 14:24:37

回答

2

你要打電話給你設置窗口的屬性glutCreateWindow以前。您的代碼,固定的(我把它換成寬度和高度常數與300只是爲了得到它來編譯和註釋掉鼠標處理機註冊):

#include <cstdio> 
#include <vector> 
#include <algorithm> 
#include <cmath> 

#include <GL/glut.h> 
#include <GL/glu.h> 

void renderScene(void) { 

    // clear framebuffer 
    glClearColor (0.f,0.f,0.f,0.f); 
    glClear (GL_COLOR_BUFFER_BIT); 

    // set-up matrix 
    glMatrixMode (GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho (0, 300, 300, 0,-1,1); 

    glViewport (0,0,300, 300); 
    //drawing ... 
} 

int main(int argc, char* argv[]) 
{ 
    glutInit (&argc, argv); 
    glutInitDisplayMode (GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH); // color, buffer 
    glutCreateWindow ("Convex hull"); 
    glutInitWindowPosition (100, 100); 
    glutInitWindowSize (300, 300); 
    glutDisplayFunc (renderScene); 
    //glutMouseFunc (mouse); 
    glutMainLoop(); 
}