2010-01-15 13 views
8

Próbowałem skonfigurować biblioteki OpenGL i GLUT w Eclipse, z CDT, na OS X z niezbyt dużym sukcesem. Nie mogę sprawić, by zaćmienie uświadomiło sobie, gdzie jest GLUT. Obecnie daje mi błąd, że mam nierozwiązaną integrację GL/glut.h. Rozglądając się po Internecie stwierdziłem, że powinienem używać flagi -ramkowej GLUT w ustawieniach gcc linker, ale wydaje się to nieskuteczne.OpenGL i GLUT w Eclipse na OS X

Odpowiedz

7

Ok. Zrobiłem to działając w X11. Powodem, dla którego mogłem pracować tylko na X11, wydaje się, że biblioteki OpenGL w systemie operacyjnym są przeznaczone dla architektury 64-bitowej, ale Eclipse skompiluje kod tylko wtedy, gdy będziemy używać architektury 32-bitowej. Może gdyby to naprawić, moglibyśmy użyć preinstalowanych bibliotek OS X. Być może jest 32-bitowa wersja leżąca w systemie operacyjnym, z której możemy skorzystać, ale nie mogę tego znaleźć. Ja jednak jestem zadowolony z używania X11 do celów edukacyjnych.

Najpierw utwórz projekt C++. Następnie, ponieważ nie można skompilować kod w wersji 64-bitowej przy użyciu Eclipse dodać następujących ...

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

następnie trzeba bibliotek i łączenie skonfigurować. Aby to zrobić, wykonaj następujące czynności:

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

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

Wreszcie trzeba ustawić zmienną DISPLAY.

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

Zanim spróbujesz uruchomić uruchomiony X11.

Wypróbuj poniższy kod, aby uzyskać coś, co mam uruchomiony w moim komputerze. Mam nadzieję, że to działa dla Ciebie!

//#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

Ta odpowiedź doprowadziła mnie do rozwiązania, którego szukałem. Mam teraz wszystko poprawnie skonfigurowane. Jedyną zmianą, którą musiałem wprowadzić za pomocą dostarczonego fragmentu kodu, była zmiana instrukcji include na #include zgodnie z odpowiedzią Briana. – fastrack20

3

W zależności od tego, którą bibliotekę GLUT zainstalowałeś w OS X, twoja oferta może być inna.

W moim systemie muszę używać:

#include <GLUT/glut.h> 

Aby upewnić się, mój kod jest wieloplatformowym używam następujące oświadczenie sprzed Procesor:

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

To może rozwiązać niektóre lub problemów .

+0

chciałem powiedzieć, że zrobiłem zmienić obejmuje do stanu GLUT/glut.h ale to wciąż wydaje się, że nie naprawili problem. Uważam, że biblioteka GLUT, którą zainstalowałem, pochodziła z wersji Macports. Zainstalowałem także XCode i mam tam wszystkie biblioteki. – fastrack20

1

Domyślny katalog instalacyjny dla MacPorts to/opt/local. Może być/opt/local nie jest dodany do twojego kompilatora to ścieżka w Eclipse. Albo to, albo ponownie zainstalować Xcode, aby dać ci GLUT/glut.h na domyślnej ścieżce dołączania do bibliotek Xcode (które możesz wtedy dodać do Eclipse?) Nie uruchamiam OS X, więc nie mogę powiedzieć co Xcode installdir jest, ale wygląda na to, że może być w/Developer, lub/Library/Developer/Shared).