OpenGL环境搭建

Posted by Haiden on April 5, 2019

OpenGL环境

OpenGL环境搭建是基于Mac系统。

1 工具下载

下载安装GUI版的 CMake

2 GLFW编译安装

GLFW:是一个专门针对 OpenGL 的 C 语言库,提供了渲染物体所需的最低限度的接口。其允许用户创建 OpenGL 上下文,定义窗口参数以及处理用户输入,把物体渲染到屏幕所需的必要功能。

2.1 下载 GLFW源码并解压

2.2 CMake对GLFW操作
2.2.1 选择源代码目录
2.2.2 目标文件目录

2.2.3 点击configure按钮

选择configure按钮读取设置和源代码,然后选择工程的生成器 Unix Makefiles ,点击done。

CMake会显示可选的编译选项用来配置最终生成的库。这里使用默认设置,并再次点击Configure按钮保存设置。

2.2.4 点击Generate按钮

在点击Configure完成后,点击Generate按钮,生成的工程文件会在 GLFW_Build 文件夹中。

2.3 终端编译
2.3.1 执行 make命令

打开终端,cd 进入 GLFW_Build目录,执行 make 命令进行编译安装库文件。

1
2
$ cd GLFW_Build
$ make

2.3.2 执行 make install 命令
1
$ make install

2.3.3 查看 /usr/local/include 目录

安装完成后查看 /usr/local/include 目录是否存在GLFW目录。

2.3.4 查看/usr/local/lib 目录

查看/usr/local/lib 目录是否存在libglfw3.a文件,如果都存在说明GLFW 环境已经配置好了。

3 GLEW 编译安装

GLEW:OpenGL 只是一种 标准/规范,并且是由驱动制造上在驱动中予以实现。GLEW的工作就是获取所需的函数的地址,并储存在函数指针中供使用。

3.1 下载GLEW源码并解压

3.2 打开终端,进入解压目录
1
$ cd GLEW解压目录路径
3.3 执行 make 命令

执行 make 命令进行编译安装库文件。

1
$ make

3.4 执行 make install 命令

执行 make install 命令进行安装。一般会安装到 /usr/local/include/usr/local/lib中。

1
$ make install
3.4.1 查看/usr/local/include目录

安装成功后会在/usr/local/include目录中会生成GL目录。

3.4.2 查看/usr/local/lib目录

如果在/usr/local/lib目录中会生成libGLEW相关的文件,如果都存在说明 GLEW 环境已经配置好了。

4 GLAD 配置

GLAD是一个开源的库,功能跟 GLEW 类似。

4.1 下载glad文件
4.1.1 打开 GLAD在线服务
4.1.2 选择OpenGL版本

​ 将语言设置为 C/C++,在 API 选项中,选择 3.3 及以上的 OpenGL 版本。

4.1.3 设置模式 Profile

​ 将模式 Profile 设置为 Core ,保证生成加载器 Generate a loader 选项是选中的。

4.1.4 点击生成 Generate

4.1.5 下载zip 包

4.2 解压复制包
4.2.1 复制glad和 KHR 目录

glad.zip包解压后 include 目录下的 gladKHR 文件夹复制/usr/local/include

4.2.2 添加glad.c 文件

glad.zip包解压的glad.c 文件添加到要运行的项目中。

5 创建项目

  1. 创建MacOs项目
  2. 删除多余文件 main.m、AppDelegate.h、 AppDelegate.m、 ViewContreoller.h、 ViewController.m
  3. 创建c++文件main.cpp与main.hpp
  4. 添加glad.c 文件到项目中

6 配置 Xcode

6.1 添加路径

在工程的 Build Settings中的Search Paths选项分别添加Header Search Paths和Library Search Paths。

1)在 Header Search Paths,将 /usr/local/include 添加到头文件搜索路径中,选择 recursive 。

2)在 Library Search Paths,将 /usr/local/lib 添加到搜索路径中,选择 recursive。

6.2 库文件

1.在工程的 Build Phases 中的 Link Binary With Libraries 中添加库文件。

  • ```
    • Cocoa.framework
    • OpenGL.framwork
    • GLUT.framework
    • CoreVideo.framework
    • IOKit.framework
    • libglfw3.a
    • libGLEW.a ```

2.libglfw3.alibGLEW.a 需要手动点击add other后去 /usr/local/lib (键盘快捷 shift+command+G)中寻找添加。

3.将Build Settings 里的 Enable Modules(C and Objective-C) 设为 No。

7 环境测试

在main.cpp中添加代码,运行测试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//
//  main.cpp
//  openGLTe
//
//  Created by Haiden on 2019/4/5.
//  Copyright © 2019 Haiden. All rights reserved.
//

#include "main.hpp"
#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);
    {
        glColor4f(1.0,0.0,0.0,0.3);
        glVertex2f(0, .5);
        
        glColor4f(0.0,1.0,0.0,0.8);
        glVertex2f(-.5,-.5);
        
        glColor4f(0.0, 0.0, 1.0,1);
        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;
}

运行后出现弹窗。

8 参考

learnopengl-cn

(macOS)环境搭建

Mac10.13.6搭建OPenGL环境