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 ...