【问题标题】:Mac OS X refuses to create my OpenGL WindowMac OS X 拒绝创建我的 OpenGL 窗口
【发布时间】:2016-09-17 16:14:53
【问题描述】:
#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 上,使用此代码,没有显示任何窗口,是否正常?为什么 ?请帮我。 编译正确,没有错误,编译成功,但是没有创建窗口! 我尝试了这段代码,它适用于 windows,但我有一个 Mac,它不工作,如何让它工作?

【问题讨论】:

    标签: c++ macos opengl


    【解决方案1】:

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

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

    查找第一条错误消息,您似乎忘记先致电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”。

    【讨论】:

    • 是的,但是我买的书上没有写,正常吗?
    • linux.die.net/man/3/glutinit 上的一条注释说:“你真的应该经常调用它,即使你是 WIN32 用户。”您的书的作者可能没有意识到这一点。一些工具链可能会抱怨glutInit is deprecated;我想这主要取决于您使用的版本。 FWIW:您的代码经过更改,不会在我的系统上发出特定警告 - Mac OS X 10.7.5,使用clang
    • @johnathanMhehdi:我想问题是,你的程序能用这个吗?如果没有,我将不得不进一步研究这一点。您可能需要添加您的代码来自哪本书。
    【解决方案2】:

    你需要初始化器过剩

    glutInit(&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;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2015-01-11
      • 2020-07-17
      • 2013-07-20
      • 1970-01-01
      相关资源
      最近更新 更多