openGL學習筆記六 glew庫及使用

2021-10-05 04:08:28 字數 2875 閱讀 9352

window預設支援到opengl1.3,後續也沒有更新,opengl並不是以api更新或者新的開發包方式更新功能,它使用了擴充套件方式獲取高版本新的功能。

如執行擴充套件功能函式glarrayelementext:**如下

char

* ext =

(char*)

glgetstring

(gl_extensions)

;//獲取該電腦顯示卡支援的擴充套件函式結合

pfnglarrayelementextproc glarrayelementext =

(pfnglarrayelementextproc)

wglgetprocaddress

("glarrayelementext");

//獲取擴充套件函式glarrayelementext 指標

glarrayelementext(0

);//通過函式glarrayelementext 指標 呼叫擴充套件函式glarrayelementext

上面這樣獲取擴充套件功能的方式很麻煩,所以就誕生了glew,是乙個跨平台的c++擴充套件庫,方便開發者使用opengl擴充套件功能。

環境:win7 vs2013

2. 開啟生成glew vs工程:

在build目錄下選擇對應版本的vs工程開啟,我使用的是vs2013開啟 vc12目錄下glew.sln

glew_shared :是編譯動態鏈結庫

glew_static : 是編譯靜態庫

根據自己情況選擇一種方式,我這裡選擇glew_static 。

編譯之後得到glew32sd.lib

3. opengl專案配置:

a. 專案屬性 ----> c/c++ —> 附加包含目錄 —> your_path\glew-master\include

b. 專案屬性 ----> 鏈結器 —> 常規 —> 附加庫目錄 —> your_path\lib

c. 專案屬性 ----> 鏈結器 —> 輸入 —> 附加依賴項 —> glew32sd.lib

4. **:

注意: glew.h要放在glfw3.h glut.h 之前,並定義巨集 glew_static

#include

// glew

#define glew_static

#include

#include

// glfw

#include

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

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

//#define debug

// function prototypes

void

key_callback

(glfwwindow* window,

int key,

int scancode,

int action,

int mode)

;// window dimensions

const gluint width =

800, height =

600;

//#ifdef debug

//int main()

//#else

//int winapi winmain(hinstance hinstance, hinstance hprevinstance, pstr szcmdline, int icmdshow)

//#endif

intmain()

glfwmakecontextcurrent

(window)

;// set the required callback functions

glfwsetkeycallback

(window, key_callback)

; glewexperimental = gl_true;

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

glewinit()

!= glew_ok)

// define the viewport dimensions

glviewport(0

,0, width, height)

;// game loop

while(!

glfwwindowshouldclose

(window)

)// 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)

5. 執行結果:

opengl學習筆記(六)

光的強度和離點光源的位置的平方成反比,並且為了使模型更加逼真,加入了常量因子,線性因子,指數因子,使其更加符合真實的效果。與平行光模型不同的是,平行光的入射方向由點光源和表面位置決定,就像計算人的視線和表面一樣。並且考慮衰減和多個點光源的效果。struct attenuation 點光源的三個引數 ...

OpenGL之GLew初始化

今天下午弄了一下午的opengl,使用混合相關函式glblendcolor時,總是出現access violation出錯。查詢了半天,換用了最新版本的glee,成功了,總算不出錯了。但是為什麼glew會出錯呢?查了一下,由於微軟只支援到opengl 1.1版本,所以要使用擴充的特性必須利用glew...

OpenGL學習筆記(六)變換的使用

version 330 core out vec4 vertexcolor out vec2 texturecoord layout location 3 in vec3 apos layout location 4 in vec3 acolor layout location 5 in vec2 ...