【问题标题】:How to create simple OpenGL window on Mac?如何在 Mac 上创建简单的 OpenGL 窗口?
【发布时间】:2017-10-28 01:58:00
【问题描述】:

OSX 版本:10.13 - High Sierra

Macbook Pro 2011 年末

Xcode: 9

级别:初学者

我查看了Apple doc中的OpenGL编程指南,但是文档不是那么友好,所以我还没有尝试过。

我做了谷歌研究和 youtube 关于如何简单地创建一个开始的窗口,我已经使用 XCode 成功地创建了一个带有我想要颜色的矩形的窗口。但它是 OpenGL v2 并且有很多弃用警告。

我想在 XCode 环境之外开发 OpenGL,但我编译失败,这是我的 main.cpp

#include <stdlib.h>
#include <OpenGL/gl.h>
#include <GLUT/glut.h>

void display () {

    glClearColor ( 1.f, 0.f, 0.f, 1.f );

    glClear ( GL_COLOR_BUFFER_BIT );

    glLoadIdentity ();

    glFlush ();

}

int main ( int argc, char** argv ) {

    glutInit ( &argc, argv );

    glutInitDisplayMode ( GLUT_SINGLE );

    glutInitWindowSize ( 640, 480 );

    glutInitWindowPosition ( 100, 100 );

    glutCreateWindow ( "Baby GL" );

    glutDisplayFunc ( display );

    glutMainLoop ();

    return 0;

}

我使用 vscode + vim 作为主文本编辑器

这是我在终端中编译 main.cpp 的方法:

g++ -pipe --std=c++14 main.cpp -lm

我尝试在main中没有代码的情况下编译它们,并且包含的​​库没有抛出任何错误,然后我将所有代码复制粘贴回main,然后编译它,它抛出了这个错误:

7 warnings generated. // just deprecation warning
Undefined symbols for architecture x86_64:
"_glClear", referenced from:
  display() in main-26b0d3.o
"_glClearColor", referenced from:
  display() in main-26b0d3.o
"_glFlush", referenced from:
  display() in main-26b0d3.o
"_glLoadIdentity", referenced from:
  display() in main-26b0d3.o
"_glutCreateWindow", referenced from:
  _main in main-26b0d3.o
"_glutDisplayFunc", referenced from:
  _main in main-26b0d3.o
"_glutInit", referenced from:
  _main in main-26b0d3.o
"_glutInitDisplayMode", referenced from:
  _main in main-26b0d3.o
"_glutInitWindowPosition", referenced from:
  _main in main-26b0d3.o
"_glutInitWindowSize", referenced from:
  _main in main-26b0d3.o
"_glutMainLoop", referenced from:
  _main in main-26b0d3.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

【问题讨论】:

    标签: macos opengl


    【解决方案1】:

    这些错误意味着链接器无法在任何地方找到这些函数。

    您必须使用-framework Cocoa-framework OpenGL 编译/链接。当您使用 GLUT 时,您还需要将其作为预编译框架下载,并将 -framework GLUT 附加到编译/链接标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 2022-08-02
      相关资源
      最近更新 更多