2010-01-15 13 views
8

Ho cercato di installare le librerie OpenGL e GLUT in Eclipse, con CDT, su OS X con non molto successo. Non riesco a ottenere l'eclisse per rendermi conto di dove si trova GLUT. Attualmente mi sta dando l'errore che ho un'inclusione non risolta GL/glut.h. Guardando in giro online ho scoperto che dovrei usare il flag -framework GLUT nelle impostazioni di gcc linker, ma questo sembra inefficace.OpenGL e GLUT in Eclipse su OS X

risposta

7

Ok. L'ho fatto funzionare in X11. Il motivo per cui ho potuto farlo funzionare su X11 è che sembra che le librerie OpenGL sul SO siano per l'architettura a 64-bit, ma eclipse compilerà il codice solo se usiamo l'architettura a 32-bit. Forse se questo fosse risolto potremmo usare le librerie preinstallate di OS X. Inoltre, forse c'è una versione a 32 bit che gira sul sistema operativo che potremmo usare ma non riesco a trovarla. Tuttavia, mi accontento di usare X11 per i miei scopi di apprendimento.

Per prima cosa crea il tuo progetto C++. Allora perché non si può compilare il codice in a 64 bit utilizzando Eclipse aggiungere la seguente ...

alt text http://img132.imageshack.us/img132/5163/step1c32bit.png

alt text http://img251.imageshack.us/img251/5163/step1c32bit.png

alt text http://img132.imageshack.us/img132/2325/step1linker32bit.png

allora avete bisogno le librerie e il collegamento istituito. Per fare questo procedere come segue:

alt text http://img29.imageshack.us/img29/1904/step2linkerglglu.png

alt text http://img196.imageshack.us/img196/4313/step2glut.png

Infine è necessario impostare una variabile DISPLAY.

alt text http://img40.imageshack.us/img40/7306/step3display.png

Prima di provare ad eseguire l'avvio X11.

Provare il seguente codice per ottenere qualcosa che ho eseguito nella mia macchina. Spero che funzioni per te!

//#include <GL/gl.h> 
//#include <GL/glu.h> 
#include <GL/glut.h> 
#define window_width 640 
#define window_height 480 
// Main loop 
void main_loop_function() { 
    // Z angle 
    static float angle; 
    // Clear color (screen) 
    // And depth (used internally to block obstructed objects) 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    // Load identity matrix 
    glLoadIdentity(); 
    // Multiply in translation matrix 
    glTranslatef(0, 0, -10); 
    // Multiply in rotation matrix 
    glRotatef(angle, 0, 0, 1); 
    // Render colored quad 
    glBegin(GL_QUADS); 
    glColor3ub(255, 000, 000); 
    glVertex2f(-1, 1); 
    glColor3ub(000, 255, 000); 
    glVertex2f(1, 1); 
    glColor3ub(000, 000, 255); 
    glVertex2f(1, -1); 
    glColor3ub(255, 255, 000); 
    glVertex2f(-1, -1); 
    glEnd(); 
    // Swap buffers (color buffers, makes previous render visible) 
    glutSwapBuffers(); 
    // Increase angle to rotate 
    angle += 0.25; 
} 
// Initialze OpenGL perspective matrix 
void GL_Setup(int width, int height) { 
    glViewport(0, 0, width, height); 
    glMatrixMode(GL_PROJECTION); 
    glEnable(GL_DEPTH_TEST); 
    gluPerspective(45, (float) width/height, .1, 100); 
    glMatrixMode(GL_MODELVIEW); 
} 
// Initialize GLUT and start main loop 
int main(int argc, char** argv) { 
    glutInit(&argc, argv); 
    glutInitWindowSize(window_width, window_height); 
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); 
    glutCreateWindow("GLUT Example!!!"); 
    glutDisplayFunc(main_loop_function); 
    glutIdleFunc(main_loop_function); 
    GL_Setup(window_width, window_height); 
    glutMainLoop(); 
} 
+1

Questa risposta mi ha portato alla soluzione che stavo cercando. Ora ho tutto configurato correttamente. L'unico cambiamento che ho dovuto fare con il pezzo di codice fornito è stato quello di modificare l'istruzione include in #include come da risposta di Brian. – fastrack20

3

A seconda della libreria GLUT installata in OS X, l'inclusione potrebbe essere diversa.

Sul mio sistema devo usare:

#include <GLUT/glut.h> 

Per assicurarsi il mio codice è multipiattaforma Io uso la seguente dichiarazione pre-processore:

#if defined(__APPLE__) && defined(__MACH__) 
# include <GLUT/glut.h> 
#else 
# include <GL/glut.h> 
#endif 

che potrebbero risolvere alcuni o ai vostri problemi .

+0

volevo dire che ho fatto cambiare la include allo stato GLUT/glut.h ma questo sembra ancora non hanno risolto il problema. Credo che la libreria GLUT che ho installato fosse dalla versione di macports. Ho anche installato XCode e ho tutte le librerie da lì. – fastrack20

1

La directory di installazione predefinita per MacPorts è/opt/local. Potrebbe essere/opt/local non aggiunto al percorso di inclusione del compilatore in Eclipse. O quello, o reinstallare Xcode per darti GLUT/glut.h sul percorso di inclusione predefinito per le librerie Xcode (che potresti dover aggiungere ad eclissi? Non eseguo OS X quindi non posso dire quale sia l'installazione di Xcode è, ma sembra che potrebbe essere in/Developer, o/Library/Developer/Shared).