Mac OS X拒绝创建我的OpenGL窗口

时间:2016-09-17 16:14:53

标签: c++ macos opengl

#include <iostream>
#include <GLUT/GLUT.h>
#include <OpenGL/OpenGL.h>

void GraphiqueAffichage() {
    glClearColor(1.0, 1.0, 0.5, 0.5);
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glFlush();
}

int main(int argc, const char * argv[]) {
    // insert code here...
    glutInitWindowPosition(10, 10);
    glutInitWindowSize(480, 272);
    glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
    glutCreateWindow("Bonjour");
    glutDisplayFunc(GraphiqueAffichage);
    glutMainLoop();
    return 0;
}

您好 我在使用OS X 10.12的Mac上,使用此代码的ans,没有显示窗口,这是正常的吗?为什么?请帮我。 编译是正确的,没有错误,构建成功,但没有创建窗口! 我尝试了这个适用于Windows的代码,但我有一台Mac,它不起作用,如何让它工作?

2 个答案:

答案 0 :(得分:3)

  

编译正确,没有错误,构建成功...

但是当你运行程序时,你会得到一个错误列表,对吗? “成功编译”不会(唉)意味着您的代码是正确的。

查找第一条错误消息,您似乎忘记先致电glutInit

int main(int argc, char * argv[]) {
    glutInit(&argc, argv);
    glutInitWindowPosition(10, 10);
    ...

(代码所在的位置,“在此处插入代码”......)

man glutInit告诉你为什么它也失败了:

  

glutInit将初始化GLUT库并与窗口系统协商会话。

其中“窗口系统”是Mac OS X.

此外,您的main错了。 argv不是const char * - 使用const说明符,编译器会对你大喊大叫。

通过这些更改,我得到了一个漂亮的黄色窗口 - 您的glClearColor - 以及自定义标题“Bonjour”。

答案 1 :(得分:1)

您需要初始化过剩

  

glutInit(&amp; argc,argv);

在您的主要。

//#include <iostream>
#include <GLUT/GLUT.h>
#include <OpenGL/OpenGL.h>

void GraphiqueAffichage() {
    glClearColor(1.0, 1.0, 0.5, 0.5);
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glFlush();
}

int main(int argc, const char * argv[]) {
    // insert code here...
    glutInit(&argc, argv);
    glutInitWindowPosition(10, 10);
    glutInitWindowSize(480, 272);
    glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
    glutCreateWindow("Bonjour");
    glutDisplayFunc(GraphiqueAffichage);
    glutMainLoop();
    return 0;
}