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