C++ 如何让OpenGL Hello World为OSX工作?

C++ 如何让OpenGL Hello World为OSX工作?,c++,macos,opengl,C++,Macos,Opengl,我一直在尝试在OSX Lion上编译Hello World OpenGL应用程序。我已尝试使用g++main.cpp-o test-lglut #include <GL/glut.h> void displayMe(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glVertex3f(0.0, 0.0, 0.0); glVertex3f(0.5, 0.0, 0.0)

我一直在尝试在OSX Lion上编译Hello World OpenGL应用程序。我已尝试使用
g++main.cpp-o test-lglut

#include <GL/glut.h>

void displayMe(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
        glVertex3f(0.0, 0.0, 0.0);
        glVertex3f(0.5, 0.0, 0.0);
        glVertex3f(0.5, 0.5, 0.0);
        glVertex3f(0.0, 0.5, 0.0);
    glEnd();
    glFlush();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE);
    glutInitWindowSize(300, 300);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("Hello world :D");
    glutDisplayFunc(displayMe);
    glutMainLoop();
    return 0;
}

MacOSX是一个非常非标准的平台。您遇到了其中一种情况。特别是,您可以使用适当的框架来代替OS X上的GL和GLUT库链接:
-framework OpenGL
-framework GLUT
,而不是
-lGL
-lglut

#include <GL/glut.h>

void displayMe(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
        glVertex3f(0.0, 0.0, 0.0);
        glVertex3f(0.5, 0.0, 0.0);
        glVertex3f(0.5, 0.5, 0.0);
        glVertex3f(0.0, 0.5, 0.0);
    glEnd();
    glFlush();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE);
    glutInitWindowSize(300, 300);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("Hello world :D");
    glutDisplayFunc(displayMe);
    glutMainLoop();
    return 0;
}
在代码中,您应该有如下内容:

#ifdef __APPLE__
# include <OpenGL/gl.h>
# include <OpenGL/glu.h>
# include <GLUT/glut.h>
#else
# include <GL/gl.h>
# include <GL/glu.h>
# include <GL/glut.h>
#endif
苹果公司__ #包括 #包括 #包括 #否则 #包括 #包括 #包括 #恩迪夫
一般来说,你需要更多的
#ifdef u u u u苹果u
黑客来编写在OSX和其他更标准的平台上工作的代码。但这应该涵盖OSX的大部分基础。还要注意,任何使用glew或类似库的东西都应该在OSX上完全预处理;您(通常)不会在运行时在OS X上加载扩展。

注意到即使是已安装的GL LIB也无法加载其依赖项吗?这与项目无关。您应该安装的某些扩展已损坏或丢失。是。不过,我不知道该怎么解决这个问题。