小白的OpenGL整合環境入門(搭建以及簡介)

2021-10-02 12:51:21 字數 4079 閱讀 9830

環境搭建

本文的環境搭建適用於vs2015及以上(作者使用的是vs2019),涉及的庫有glut系列(glut、freeglut)、glfw3+glad、glm、stb_image、assimp、anttweakbar,最終可以完美契合opengl教程。

我會在最後給出已經編譯整合好的常用庫合集鏈結(含兩個vs專案模板)。

glut:跨平台的opengl程式的工具包,定義以及控制視窗,偵測事件;

freeglut:是glut的替代;

glu:包含在glut內,是對底層opengl介面的封裝(實現跨平台),包含一些數學方法如向量,操縱矩陣;

glew:glu的加強版,但不包括數學方法需要搭配glm;

glm:數學庫(用於glfw);

glad:是glew的替代;

glfw:是freeglut公升級版;

stb_image:用於影象載入的解碼庫;

assimp:用於模型載入的庫;

anttweakbar:介面庫,在程式中增加一些輕量且直觀的 gui 效果(相當於乙個控制台)。

其中說明一下8,9,10是拓展項,不是必須(我都整合在一起了可以直接用)

opengl發展

opengl版本

版本特點

opengl1.x

支援了頂點陣列,紋理,緩衝物件及一系列優化

opengl2.x

可程式設計著色,能夠實現更豐富的效果 ;代表dx9級硬體

opengl3.x

增加幾何著色渲染,擁有更強的跨平台能力;代表dx10級硬體

opengl4.x

若干細節優化;代表dx11級硬體

詳細內容可以檢視官方文件。

庫的分類

功能庫的更替

視窗建立,io互動,opengl上下文處理

glut --> freeglut --> glfw

對顯示卡底層的介面支援

glu --> glew --> glad

一般來說glfw和glad搭配使用(也可以與glew),freeglut與glew搭配。

庫所對應的版本庫版本

glut

opengl1.0/2.0

freeglut

opengl 1.0/2.0/3.0

glew

opengl2.0以上

glfw

opengl3.0以上

glad

opengl3.0以上

這裡提供兩種環境搭建的方法,但均基於vs2015及以上(作者使用的是vs2019)。

其中方法一適用於使用glut或freeglut方法二提供的是glfw+glad

本著學新不學舊的原則,更推薦方法二;但是方法一在學習和搭建上都更簡單。

新建乙個專案,在解決方案管理器中右鍵專案名-管理nuget程式包(或者上方工具欄專案-管理nuget程式包

開啟nuget管理器

開啟nuget管理器

搜尋nupengl,找到第乙個並安裝

安裝nupengl

到此通過nuget包管理就已經為這個專案安裝了opengl環境,其中包含了opengl, freeglut, glew, game, glfw, glut, nativepackage

解壓壓縮包,記下路徑

解壓縮開啟vs(演示為vs2019),工具欄 - 專案 - 屬性 - vc++目錄包含目錄庫目錄分別新增我們解壓縮的包內的include資料夾和lib資料夾

鏈結庫

到此就搭建完畢了,下面測試一下**:

#include

#include

#include

#include

#pragma comment(lib,"glfw3.lib")

#pragma comment(lib,"glad.lib")

#pragma comment(lib,"stb_image.lib")

#pragma comment(lib,"assimp.lib")

#pragma comment(lib,"winmm.lib")

//#pragma comment(linker, "/subsystem:\"windows\" /entry:\"maincrtstartup\"" )

void

key_callback

(glfwwindow* window,

int key,

int scancode,

int action,

int mode)

;// window dimensions

const gluint width =

800, height =

600;

void

minit()

intmain()

glfwmakecontextcurrent

(window)

;// set the required callback functions

glfwsetkeycallback

(window, key_callback)

;// initialize glew to setup the opengl function pointers if(

!gladloadglloader

((gladloadproc)glfwgetprocaddress)

)// 定義視角 define the viewport dimensions

glviewport(0

,0, width, height)

;//進入迴圈 game loop

while(!

glfwwindowshouldclose

(window)

)//釋放glfw分配的記憶體 terminate glfw, clearing any resources allocated by glfw.

glfwterminate()

;return0;

}//鍵盤事件 is called whenever a key is pressed/released via glfw

void

key_callback

(glfwwindow* window,

int key,

int scancode,

int action,

int mode)

}

如果顯示如下,鍵盤輸入z,輸出」!!!「則證明成功。

成功示例

reference:

opengl關於glut, freeglut, glfw, glew, glad, gl3w庫的說明

opengl常用的庫

git的小白入門

一 git可以幹什麼 二 基礎操作 git init 初始化本地git倉庫 git status 檢視狀態 git add 新增檔案 git add 新增所有檔案 git add html 新增所有html檔案 html可以換成任何檔案型別字尾 git rm cached 刪除檔案 git comm...

js入門的小白

初學js學習筆記 1.輸入與輸出 輸入prompt 可以接收使用者的輸入 如window.prompt 輸出window.alert 彈出警告框 document.write 將內容寫到html文件中 真實的網頁中很少用到,而是選用第三種方式 innerhtml 寫入html元素中,比如div中co...

opengl中的GLUT環境配置

windows環境下安裝glut的步驟 1.2 在 我的電腦 中搜尋 gl.h 並找到其所在資料夾 如果是visualstudio2005,則應該是其安裝目錄下面的 vc platformsdk include gl資料夾 把解壓得到的glut.h放到這個資料夾。3 把解壓得到的glut.lib和g...