一滔灶、寫在前面
OpenGL是一個API,是一組用來操作圖形吼肥、圖像的函數录平。
我相信你可能對涉及到的庫,有一些搞不清楚缀皱。下面就簡單介紹(網上拷貝的斗这,感覺寫得簡潔好懂):
glew是對底層OpenGL接口的封裝,代碼可跨平臺啤斗。
glad與glew作用相同表箭,glad可看作glew的升級版。
Freeglut主要用于創(chuàng)建OpenGL上下文钮莲、接收一些鼠標鍵盤事件等等免钻。
glfw是Freeglut升級版,作用基本相同崔拥。
本次環(huán)境我們選擇glfw+glad极舔。IDE選擇VS2019。
二链瓦、安裝VS2019
這個安裝過于簡單拆魏,在https://visualstudio.microsoft.com/zh-hans/downloads/? 中選擇“community”版本,下載安裝就可以慈俯。
安裝時渤刃,為了保持輕量,我們只選擇一個“使用C++的桌面開發(fā)”
如果你安裝過微軟的東西肥卡,后面就按照提示安裝吧溪掀,超級簡單。
三步鉴、GLFW安裝
本來有兩種配置方式揪胃,一種是用CMAKE進行源碼編譯安裝,生成庫文件氛琢,但筆者用cmake編譯后喊递,提示32位和64位沖突,由于筆者懶阳似,沒有重試骚勘,于是就選擇了第二種,直接下載編譯好的庫文件,別說俏讹,筆者幸運当宴,直接能用,聽說有一些人直接下載并不能用泽疆。
打開http://www.reibang.com/p/64fe4a4c1ed8户矢,選擇32位的庫文件(聽說64位的用起來會很麻煩的)
下載下來直接解壓,把“l(fā)ib-vc2019”下的“glfw3.lib”文件和“include”下的“GLFW”文件夾拷出來備用殉疼。
四梯浪、GLAD配置
GLAD是一個在線服務,線上操作瓢娜,直接把生成的文件下載挂洛。
打開https://glad.dav1d.de/ 按照下面的配置:
點擊“GENERATE”后,把glad.zip下載下來:
解壓后拷出來備用眠砾。
至此虏劲,所有需要的庫文件都準備好了。
五荠藤、庫文件夾組織
在電腦中選擇一個文件夾作為OpenGL庫文件的存放目錄伙单,筆者選擇的是d:\OpenGL\package
然后將三四兩步中所涉及的文件和文件夾用以下結構組織:
六、VS配置
打開VS哈肖,點擊“視圖”-》“屬性頁”吻育,找到“配置屬性”-》“VC++目錄”,進行以下操作:
先點擊“包含目錄”淤井,點擊“編輯”布疼,如下圖
點擊下圖中的小按鈕,選擇D:\OpenGL\Package\include 目錄
相似的币狠,點擊“庫目錄”下的“編輯”游两,如下圖
點擊后面小按鈕悠咱,選擇D:\OpenGL\Package\lib
接下來打開“鏈接器”-》“輸入”-》“附加依賴項”中的“編輯”震庭,如下圖
在編輯框中輸入如下圖兩項,點擊確定
至此惊橱,包含目錄和庫目錄止吐,以及附加依賴庫都設置完畢宝踪,下面進行程序測試。
在VS中新建一個空項目碍扔。
在“解決方案管理器”中瘩燥,進行以下操作:
在彈出的對話框選擇D:\OpenGL\Packages\src\glad.c
再在“源文件”中添加一個“新建項”,添加一個C++文件不同,如下圖
在此源文件中厉膀,添加如下代碼(代碼可先不用深究):
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow* window);
// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
int main()
{
? ? glfwInit();
? ? glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
? ? glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
? ? glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__
? ? glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif
? ? GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
? ? if (window == NULL)
? ? {
? ? ? ? std::cout << "Failed to create GLFW window" << std::endl;
? ? ? ? glfwTerminate();
? ? ? ? return -1;
? ? }
? ? glfwMakeContextCurrent(window);
? ? glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
? ? if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
? ? {
? ? ? ? std::cout << "Failed to initialize GLAD" << std::endl;
? ? ? ? return -1;
? ? }
? ? while (!glfwWindowShouldClose(window))
? ? {??
? ? ? ? processInput(window);? ?
? ? ? ? glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
? ? ? ? glClear(GL_COLOR_BUFFER_BIT);
? ??? ? glfwSwapBuffers(window);
? ? ? ? glfwPollEvents();
? ? }
? ? glfwTerminate();
? ? return 0;
}
void processInput(GLFWwindow* window)
{
? ? if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
? ? ? ? glfwSetWindowShouldClose(window, true);
}
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
? ? glViewport(0, 0, width, height);
}
之后點擊如下按鈕
出現如下結果
自此溶耘,環(huán)境搭建成功。