macos OS X 上 Eclipse 中的 OpenGL 和 GLUT

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2068693/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-21 06:40:49  来源:igfitidea点击:

OpenGL and GLUT in Eclipse on OS X

c++macosopengleclipse-cdtglut

提问by fastrack20

I have been trying to setup the OpenGL and GLUT libraries in Eclipse, with CDT, on OS X with not very much success. I cannot seem to get eclipse to actually realize where GLUT is. It is currently giving me the error that I have an unresolved inclusion GL/glut.h. Looking around online I found that I should be using the -framework GLUT flag in the gcc linker settings, but this seems ineffective.

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

采纳答案by Derek Litz

Ok. I got it working in X11. The reason I could only get it working on X11 is because it seems the OpenGL libs on the OS are for the 64-bit architecture, but eclipse will only compile code if we use 32-bit architecture. Maybe if this got fixed we could use OS X pre-installed libraries. Also, maybe there is a 32-bit version lying around on the OS we could use that but I can't seem to find it. I, however, am content with using X11 for my learning purposes.

行。我让它在 X11 中工作。我只能让它在 X11 上运行的原因是因为操作系统上的 OpenGL 库似乎是针对 64 位架构的,但是如果我们使用 32 位架构,eclipse 只会编译代码。也许如果这个问题得到解决,我们可以使用 OS X 预安装的库。另外,也许操作系统上有一个 32 位版本,我们可以使用它,但我似乎找不到它。但是,我对将 X11 用于我的学习目的感到满意。

First create your C++ project. Then since you can't compile code in 64-bit using eclipse add the following...

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

alt text

替代文字

alt text

替代文字

alt text

替代文字

Then you need your libraries and linking set up. To do this do the following:

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

alt text

替代文字

alt text

替代文字

Lastly you need to set a DISPLAY variable.

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

alt text

替代文字

Before you try running start up X11.

在您尝试运行之前启动 X11。

Try the following code to get something I've got running in my machine. Hope it works for you!

试试下面的代码来获取我在我的机器上运行的东西。希望对你有帮助!

//#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();
}

回答by Brian Gianforcaro

Depending on which GLUT library you installed in OS X your include might be different.

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

On my system I have to use:

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

#include <GLUT/glut.h>

To make sure my code is cross platform I use the following pre-processor statement:

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

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

That might fix some or your problems.

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

回答by Riccardo Tramma


I wrote an article about how to setup Eclipseto develop OpenGL(and GLUT) applications in C/C++and Javain both Windowsand Mac OS Xif you are interested. It contains all the steps and all you need to know to have the system ready.


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

You can find it here:
Setup Eclipse to develop OpenGL & GLUT apps in Java & C/C++ on Windows & MAC OS X!

您可以在此处找到它:
设置 Eclipse 以在 Windows 和 MAC OS X 上使用 Java 和 C/C++ 开发 OpenGL 和 GLUT 应用程序!

回答by Riccardo Tramma

The default install directory for MacPorts is /opt/local. Could be /opt/local isn't added to your compiler include path in Eclipse. Either that, or reinstalling Xcode to give you GLUT/glut.h on the default include path for Xcode libs (which you may then need to add to eclipse? I don't run OS X so I can't say what the Xcode installdir is, but it looks like it could be in /Developer, or /Library/Developer/Shared).

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