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
目录下的 glad
和 KHR
文件夹复制到 /usr/local/include
。
4.2.2 添加glad.c 文件
glad.zip包解压的glad.c 文件添加到要运行的项目中。
5 创建项目
- 创建MacOs项目
- 删除多余文件 main.m、AppDelegate.h、 AppDelegate.m、 ViewContreoller.h、 ViewController.m
- 创建c++文件main.cpp与main.hpp
- 添加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.a 和 libGLEW.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;
}
运行后出现弹窗。