2010-01-15 13 views
8

Eclipse'de OpenGL ve GLUT kitaplıklarını, OS X üzerinde CDT ile çok fazla başarı ile kurmaya çalışıyorum. GLUT'un nerede olduğunun farkına varmak için tutulmayacağım. Şu anda çözülmemiş bir inklüzyon GL/glut.h olduğumda bana hata veriyor. Çevrimi araştırdığımda gcc linker ayarlarında frame GLUT bayrağını kullanmam gerektiğini anladım, ancak bu etkisiz görünüyor.OS X'de Eclipse'de OpenGL ve GLUT

cevap

7

Tamam. X11'de çalışıyorum. X11 üzerinde çalışmamın sebebi, işletim sistemindeki OpenGL lib'lerinin 64-bit mimariye sahip olması gibi görünüyor, ancak 32-bit mimariyi kullanırsak, tutulma sadece kod derleyecektir. Belki de bu düzeltildiyse, OS X önceden yüklenmiş kütüphaneleri kullanabiliriz. Ayrıca, belki de işletim sisteminde kullanabileceğimiz 32-bit bir versiyonu var, ama bunu göremiyorum. Bununla birlikte, öğrenme amaçlarım için X11'i kullanıyorum.

İlk önce C++ projenizi oluşturun. Sonra

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

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

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

Sonra kütüphaneleri gereken ve oluşturulması Bağlama işlemi ... aşağıdakileri ekleyin Tutulma kullanarak 64-bit kod derleme olamaz çünkü. Bu aşağıdakileri yapın yapın:

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

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

Son olarak bir DISPLAY değişkenini ayarlamak gerekir.

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

X11 başlatmak denemenizi önce.

Makinemde koşturduğum bir şey almak için aşağıdaki kodu deneyin. Umarım senin için çalışır!

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

Bu cevap beni aradığım çözüme götürdü. Artık her şey doğru şekilde yapılandırılmış. Sağlanan kod parçasıyla yapmam gereken tek değişiklik, include ifadesini Brian'ın cevabı uyarınca #include olarak değiştirmekti. – fastrack20

3

OS X'te hangi GLUT kitaplığına yüklediğinize bağlı olarak, içerdiğiniz sayfalar farklı olabilir. Benim sistemde

ı kullanmak zorunda:

#include <GLUT/glut.h> 

yapmak için emin benim kodudur aşağıdaki öncesi işlemci deyimini kullanmak çapraz platform:

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

kısmını veya sorunları gidermek olabilir .

+0

Ben devlet GLUT/glut.h için içerir, ancak bu yine de konuyu sabit değildir görünüyor değiştirmek yaptığını söylemek anlamına geliyordu. Yüklediğim GLUT kitaplığının macports sürümünden olduğuna inanıyorum. Ayrıca XCode'u yükledim ve tüm kütüphaneleri oradan aldım. – fastrack20

1

MacPorts için varsayılan yükleme dizini/opt/local'dir./Opt/local, derleyicinize eklenmemiş olabilir, Eclipse'deki yolu içerir. Ya da, varsayılan olarak GLUT/glut.h vermek için Xcode yeniden yükleme Xcode libs için yolunu içerir (daha sonra tutulmaya eklemek gerekir? Ben OS X çalıştırmayın böylece Xcode installdir ne diyemem öyle, ama/Developer veya/Library/Developer/Shared içinde olabilir gibi görünüyor.