有幾個常用的學習opengl**
首先,需要明確的是opengl不是乙個語言,它通常被認為是乙個圖形介面庫(提供了一堆的api介面),但是,更準確地說opengl本身並不是api,它僅僅是乙個規範。
opengl規範是非常嚴格的,它規定了每個函式該如何執行,以及對應的輸出值。至於具體內部的每個函式是如何實現(implement)的,是由opengl庫的開發者自行決定。
opengl使用c語言開發的,所以它有很多c語言的特性,例如,它不支援函式過載,因此裡面會有很多函式名相近功能相同但只是用於處理不同資料型別的函式組。
利用opengl可以動畫,遊戲
,視覺化等
這個案例是利用opengl 實現了乙個太陽系系統。
這裡僅僅只以ubuntu 16.04版本為例
sudo
apt-get
install build-essential libgl1-mesa-dev
sudo
apt-get
install freeglut3-dev
sudo
apt-get
install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
測試案例(test.cc)
#include #include /* 初始化材料屬性、光源屬性、光照模型,開啟深度緩衝區 */
void init(void)
; glfloat mat_shininess = ;
glfloat light_position = ;
glclearcolor(0.0, 0.0, 0.0, 0.0);
glshademodel(gl_smooth);
glmaterialfv(gl_front, gl_specular, mat_specular);
glmaterialfv(gl_front, gl_shininess, mat_shininess);
gllightfv(gl_light0, gl_position, light_position);
glenable(gl_lighting);
glenable(gl_light0);
glenable(gl_depth_test);
}/*呼叫glut函式,繪製乙個球*/
void display(void)
int main(int argc, char** ar**)
這個測試案例網上有很多版本,但是不一定能夠有效,因為終端編譯的時候,有時候回報這樣的錯誤。
/usr/bin/ld: cannot find -lgl
collect2: error: ld returned 1 exit status
實際上輸入終端的命令應該是:
g++ test.cpp -o test -lgl -lglut
./test
這裡網上如果是-lgl 會找不到gl的庫 OpenGL學習(3) 簡單介紹
opengl本身並不是乙個api,僅僅是乙個規範 specification opengl規範嚴格規定了每個函式該如何執行,以及它們的輸出值。至於內部具體每個函式是如何實現 implement 的,將由opengl庫的開發者自行決定。實際的opengl庫的開發者通常是顯示卡的生產商。opengl的一...
OpenGL學習筆記 OpenGL的變換和矩陣
opengl的變換和矩陣 1 指定矩陣型別 opengl中使用glmatrixmode指定當前要設定的矩陣型別,常用的引數是gl projection和gl modelview,還有gl texture。opengl將視點變換 即攝像機變換 和模型變換 即物體變換和世界變換 合二為一了。glmatr...
OpenGL學習筆記 OpenGL的變換和矩陣
opengl的變換和矩陣 1 指定矩陣型別 opengl中使用glmatrixmode指定當前要設定的矩陣型別,常用的引數是gl projection和gl modelview,還有gl texture。opengl將視點變換 即攝像機變換 和模型變換 即物體變換和世界變換 合二為一了。glmatr...