如何在Mac上创建简单的OpenGL窗口



OSX 版本: 10.13 - 高山脉

Macbook Pro 2011年末

Xcode: 9

级别:初级

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

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

我想在XCode环境之外开发OpenGL,但我未能编译它,这是我的主要内容.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)

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

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

最新更新