OS X上的Eclipse中的OpenGL和GLUT

时间:2010-01-15 00:47:25

标签: c++ macos opengl eclipse-cdt glut

我一直试图在OS X上使用CDT在Eclipse中设置OpenGL和GLUT库并没有取得多大成功。我似乎无法让eclipse真正意识到GLUT在哪里。它目前给我一个错误,我有一个未解决的包含GL / glut.h。在网上查看我发现我应该在gcc链接器设置中使用-framework GLUT标志,但这似乎无效。

4 个答案:

答案 0 :(得分:7)

确定。我在X11工作了。我之所以能够在X11上工作的原因是因为OS上的OpenGL库似乎是针对64位架构的,但是如果我们使用32位架构,eclipse只会编译代码。也许如果这个问题得到解决,我们可以使用OS X预装的库。此外,也许在我们可以使用的操作系统上有一个32位版本,但我似乎无法找到它。但是,我满足于将X11用于学习目的。

首先创建您的C ++项目。然后,因为您无法使用eclipse在64位中编译代码,请添加以下内容...

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

然后你需要你的库和链接设置。为此,请执行以下操作:

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

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

最后,您需要设置一个DISPLAY变量。

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

在尝试运行启动X11之前。

尝试使用以下代码来获取我在计算机上运行的内容。希望它适合你!

//#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 :(得分:3)

根据您在OS X中安装的GLUT库,您的include可能会有所不同。

在我的系统上,我必须使用:

#include <GLUT/glut.h>

为了确保我的代码是跨平台的,我使用以下预处理器语句:

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

这可能会解决一些或你的问题。

答案 2 :(得分:2)


我写了一篇关于如何设置 Eclipse 以在 C / C ++ 中开发 OpenGL (以及 GLUT )应用程序的文章如果您有兴趣, Windows Mac OS X 中的 Java 。 它包含了准备系统所需的所有步骤和所有知识。

你可以在这里找到它:
Setup Eclipse to develop OpenGL & GLUT apps in Java & C/C++ on Windows & MAC OS X!

答案 3 :(得分:1)

MacPorts的默认安装目录是/ opt / local。可能/ opt / local未添加到Eclipse中的编译器包含路径中。要么是重新安装Xcode,要么在Xcode libs的默认包含路径上给你GLUT / glut.h(你可能需要添加到eclipse?我不运行OS X所以我不能说Xcode installdir是什么是,但看起来它可能在/ Developer,或/ Library / Developer / Shared)。