本文僅描述在 Windows 系統(tǒng)上如何搭建 OpenGL 開發(fā)環(huán)境氮帐,關(guān)于其他系統(tǒng),可以參考LearnOpenGL:創(chuàng)建窗口洛姑,本文使用的 IDE 是 Visual Studio 2017
1. 準備 GLFW 靜態(tài)庫
目標:得到 GLFW 的靜態(tài)庫文件上沐,以便在工程中引入使用
步驟:
1.1 下載 GLFW 源文件
下載地址 : GLFW
在頁面上點擊 Source package
下載后得到文件 glfw-3.3.5.zip,解壓后得到目錄 glfw-3.3.5,在該目錄中新建一個文件夾 build
1.2 下載 CMake
下載地址:CMake
在頁面中選擇 .msi 安裝文件
下載完成后點擊安裝即可
1.3 使用CMake 生成 GLFW 工程
打開 CMake楞艾,配置源代碼目錄和工程生成目錄参咙,分別指向上面下載的 glfw 目錄和 build 目錄
配置完成后點擊 CMake 的 Configure 按鈕,之后點擊 Generate硫眯,會在 build 目錄下生成一個解決方案和若干工程
使用 Visual Studio 2017 打開 GLFW.sln蕴侧,構(gòu)建解決方案,在 build/src/Debug 目錄生成 glfw3.lib 靜態(tài)庫文件
2. 準備 glad
- 進入 Glad網(wǎng)站
-
按照下圖示意進行選擇两入,gl 版本要選擇顯卡支持的版本净宵,目前 windows 系統(tǒng)一般選 version4.5 就可以
- 勾選 Generate a loader 之后竣蹦,點擊 GENERATE承粤,頁面會生成對應(yīng)的文件并跳轉(zhuǎn)到下載界面
- 下載 glad.zip 并解壓,得到子目錄 include 和 src
3. 下載數(shù)學(xué)庫 glm
OpenGL 編程中需要用到大量的數(shù)學(xué)計算如矩陣击你、三角函數(shù)等剃氧,glm 是一個數(shù)學(xué)庫敏储,建議直接依賴
3.1 下載 glm
在 glm下載 glm 源碼或壓縮包,如果是壓縮包朋鞍,下載后解壓
3.2 得到目錄
4. 新建并配置你的工程
4.1 新建工程
- 新建一個目錄已添,假設(shè)命名為 valor ,在該目錄下新建目錄 gl 和 valor滥酥,gl 下新建 include/lib/src 三個子目錄
- 使用 Visual Studio 在目錄 valor/valor 下新建Visual C++ 空項目更舞,并在工程的源文件目錄下新建 main.cpp 文件
4.2 復(fù)制 GLFW 和 glad 對應(yīng)的目錄和文件
- 將 glfw-3.3.5 目錄中 include 下的 GLFW 整個復(fù)制到 valor/gl/include 下
- 將上面準備好的 glfw3.lib 文件復(fù)制到 valor/gl/lib 下
- 將 glad 目錄中 include 下的 glad 和 KHR 目錄復(fù)制到 valor/gl/include 下
- 將 glad 目錄中 src 下的 glad.c 文件復(fù)制到 valor/gl/src 下
- 將 glm 庫中的 glm 目錄復(fù)制到 valor/gl 下
4.3 配置工程屬性
- 配置項目的包含目錄,指向 valor/gl/include 目恨狈;配置項目的庫目錄疏哗,指向 valor/gl/lib 目錄
-
為項目添加附加依賴項 opengl32.lib 和 glfw3.lib
-
為 glm 庫添加附加包含目錄
-
將 valor/gl/src/glad.c 添加到項目源文件
4.4 運行 demo 代碼驗證
將下面的代碼復(fù)制到 main.cpp 中,構(gòu)建解決方案并運行
//main.cpp
#include <GLFW/glfw3.h>
#include <glm.hpp>
int main(void)
{
GLFWwindow* window;
/* 初始化glfw */
if (!glfwInit())
return -1;
/* 創(chuàng)建一個Window 和 OpenGL上下文 */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
//創(chuàng)建失敗就退出
glfwTerminate();
return -1;
}
/* 激活上面創(chuàng)建的OpenGL上下文 */
glfwMakeContextCurrent(window);
/* 進入游戲引擎主循環(huán) */
while (!glfwWindowShouldClose(window))
{
/* Render here */
/* glm::abs */ 為測試 glm 庫引入是否成功 */
glClearColor(0.5f, glm::abs(-0.1f), 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* 處理鼠標 鍵盤事件 */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
如果彈出淡紅色的窗口禾怠,說明環(huán)境構(gòu)建成功了返奉!