您当前的位置:首页 > 计算机 > 系统应用 > macOS

在 Mac OS X Yosemite 10.10.5 上配置 OpenGL 编程环境

时间:04-09来源:作者:点击数:

这个教程主要参考了youtube上的视频Getting Started in OpenGL with GLFW/GLEW in Xcode 6,这个视频有点问题,不能照搬。本人通过自己摸(瞎)索(猫)加(碰)下(死)方(耗)的(子)评论,现在给出一种可能安装成功的方案,至于能不能成功,看各位的造化了。

首先,你的 mac 需要有最新的 Xcode,Command line tool, 这些都是最基础的,估计各位已经具备条件了。其次,下载安装CMake(https://cmake.org/),这个也没有难度,和安装普通软件没有区别。

接下来正式开始配置我们的OpenGL编程环境:

1. 下载glew(http://glew.sourceforge.net/), 点截图中间红色的 zip。

2. 下载glfw(https://cmake.org/),点击截图中靠右侧第一个橘黄色的框(Download GLFW 3.1.2)。

3. 打开 Xcode -> Create a new Xcode project -> Command Line Tool

然后给项目取个名字(比如:BaseOpenGL),选择保存路径到桌面(比较方便)。然后,把之前两步下载的 glfw 和 glew 解压并移动到这个项目文件夹下,为了方便,把版本号删掉。

4. 在 glfw 文件夹下创建一个名为 build 的文件夹,glfw 文件夹下存在一个 CMakeLists.txt,因此我们需要用到 CMake 软件编译这个库。打开 CMake,把这个 CMakeLists.txt 拖放到 CMake 窗口靠上方的位置,可以看到其路径被自动输入到两个表单中,一个是:Where is the source code: 另一个是 Where to build the binaries。在后者的路径下,添加一个/build,表示在我们刚刚创建的 build 文件夹中创建二进制文件。

5. 点CMake窗口下方的 Configure,在弹出的菜单中有一个下拉表单,在这个下拉表单中选择 Xcode,表单下方还是采用其默认的“Use default native compilers”,然后点 Done。

6. 第5步后 CMake 的窗口出现了很多背景是红色的字符,在第一个选项: BUILD_SHARED_LIBS 后打钩,点 Configure,发现红色背景消失了,再点 Generate。然后我们就能在之前创建的 build 文件夹中发现很多新文件了:

7. 双击进入 build 文件夹中的 GLFW.xcodeproj 文件。然后注意窗口左上角运行按钮旁边的那个按钮:ALL_BUILD,将其换为 install,并选中 My Mac。然后点击黑色三角运行按钮,编译这个文件。编译之后会出现很多警告,都不要管,这是预料中的事。经过这个步骤,你电脑的某些文件夹中就存在了 glfw 的动态链接库和头文件。

8. 下面安装 glew,glew 的编译过程与 glfw 不同。首先打开命令行,然后将路径切换到 glew的文件夹内部,然后输入 sudo make install,输入电脑密码。然后电脑就开始对 glew 进行编译了,大概需要10分钟的时间才能编译好,请耐心等待。完成后,在 glew 文件夹下可以看到 include 文件夹和 lib 文件夹,分别存储这个包的头文件和库文件。

9. 接下来我们修改 Xcode 的配置环境。首先打开之前创建的那个BaseOpenGL工程,然后选中左侧列表的第一个 BaseOpenGL,点右侧的build Phases,然后点开 Link Binary with Libraries,点+号,搜索 OpenGL.framework, Add.

10. 然后再点+号打开刚才的窗口,这一次选择 Add Other。然后摁住 shift+command+G,输入 \usr\local 跳转到这个路径下。进入该路径下的 lib 文件夹,然后选择 libGLEW.1.13.0.dylib。重复前面的步骤,再进入到这个文件夹下,选择 libglfw.3.1.dylib。有可能你在这个路径下找不到这俩库(我一开始就没找到),那么尝试在\usr\lib 文件夹下找,找到后把与 GLEW 和 glfw 相关的库文件都拷贝粘贴到 \usr\local\lib 中,把原来的那些删掉。

11. 第10步加了一个OpenGL.framework 和两个库文件,这一步将选项卡由 Build Phases 切换到 Build Settings,找到 Search Paths 那一栏,在Header Search Paths 中点+号,输入 /usr/local/include,在 Library Search Paths 中添加:/usr/local/lib。有可能出现 GlEW 或者 GLFW 的头文件没有出现在 /usr/local/include 中的情况,此时请去 /usr/include 中寻找,找到相关的文件夹(GL、GLFW)后拷贝粘贴到 /usr/local/include 中,然后删掉原文件。

12. 在 Linking 一栏里找到 Other Linker Flags,添加 -lGLEW 链接参数。至此,基本环境就配置完了,下一步是写代码进行测试。测试代码如下:

#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>

void Render(void)
{
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_TRIANGLES);
    {
        glColor3f(1.0,0.0,0.0);
        glVertex2f(0, .5);
        glColor3f(0.0,1.0,0.0);
        glVertex2f(-.5,-.5);
        glColor3f(0.0, 0.0, 1.0);
        glVertex2f(.5, -.5);
    }
    glEnd();
}

int main(int argc, const char * argv[]) {
    GLFWwindow* win;
    if(!glfwInit()){
        return -1;
    }
    win = glfwCreateWindow(640, 480, "OpenGL Base Project", NULL, NULL);
    if(!win)
    {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }
    if(!glewInit())
    {
        return -1;
    }
    glfwMakeContextCurrent(win);
    while(!glfwWindowShouldClose(win)){
        Render();
        glfwSwapBuffers(win);
        glfwPollEvents();
    }
    glfwTerminate();
    exit(EXIT_SUCCESS);
    return 0;
}

测试结果为这样一幅图:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门