輔佐類分類: 1)視窗初始化函式 2)視窗處置和工作處置函式 3)定義場景製造迴圈函式 4)三圍物體製造函式 5)顏色索引表裝入函式 6)空閒工作處置函式 下面描寫了乙個程式,該程式盡可以包含輔佐庫的全部函式。該程式完結的功用是:定義鍵盤的功用,0~9及a分別標明選擇11種底子 形體的一種進行製造;定義滑鼠的功用為:左鍵按下標明選擇實心閃現方式,右鍵按下標明選擇網狀閃現方式;空閒工作的功用定義 為 :重複的對形體進行擴充套件或減小。程式頂用到了列出的除顏色索引裝入函式以外的其他全部函式。 **如下: #include#include//為了讓下面的標頭檔案編譯的時分經過#include#include#includeusing namespace std;
void myinit(void);
void drawscene(int,int);
void callback display(void);
void callback myreshape(glsizei w, glsizei h);
void callback setsolid(aux_eventrec *);
void callback setwire(aux_eventrec *);
void callback setscale();
void callback key_0(void);
void callback key_1(void);
void callback key_2(void);
void callback key_3(void);
void callback key_4(void);
void callback key_5(void);
void callback key_6(void);
void callback key_7(void);
void callback key_8(void);
void callback key_9(void);
void callback key_a(void);
/*全域性變數*/
glint width = 0; //視窗寬度
glint height = 0; //視窗高度
glint shapetype, solid = 1; //形體型別及能否實心
glfloat scale = 1.0f; //形體縮放比例
/*初始化函式:定義質料與光照*/
void myinit(void)
; glfloat specular = ;
glfloat position_one = ;
glfloat position_two = ;
//定義質料
glmaterialfv(gl_front_and_back, gl_diffuse, diffuse);
glmaterialfv(gl_front_and_back, gl_specular, specular);
glmaterialf(gl_front_and_back, gl_shininess, 64.0f);
//定義linght0,linght1
gllightfv(gl_light0, gl_diffuse, diffuse);
gllightfv(gl_light0, gl_specular, specular);
gllightfv(gl_light0, gl_position, position_one);
gllightfv(gl_light1, gl_position, position_two);
//運用雙面光照
gllightmodeli(gl_light_model_two_side, gl_true);
//啟用光照與深度勘探
glenable(gl_light0);
glenable(gl_light1);
glenable(gl_lighting);
glenable(gl_depth_test);}/*
閃現相應函式:呼叫集結形體製造,程式會迴圈的呼叫該函式進行製造,
因此當其他程式中修改了以下製造程式中的一些引數時,無需呼叫該函式,
程式會自動地用該函式從頭進行製造。
以下程式中先指定視口、**快取,經過一系列座標轉換後,在製造集結形體,
然後溝通前後快取,將製造的內容閃現到螢幕上。
*/void callback display(void)
/*當視窗大小發生變化時,相應地調整座標系*/
void callback myreshape(glsizei w, glsizei h)
/* 場景製造函式
該函式製造輔佐庫中的全部底子幾何體。其間shapetype引數抉擇製造何種形體,
solid引數抉擇能否製造實心體。這裡呼叫了當時輔佐庫中的**全部形體製造函式。細心的
使用者或許會發現,程式工作的效果中可以碰到了輔佐庫中的乙個小錯誤,即當製造圓柱和圓錐時,
從實心到網狀或從網狀的圓柱或圓錐,同一幀畫面中也無法一同閃現實心和網狀的圓柱或圓錐。
輔佐庫並不常用,因此並不必擔憂,不過仍是希望opengl的下乙個版別中能改掉這個小錯誤。
*/void drawscene(int shapetype,int solid)}/*
滑鼠工作處置函式
滑鼠時辰處置函式定義得非常簡略,單機
*/void callback setsolid(aux_eventrec *)
void callback setwire(aux_eventrec *)
/* 空閒時辰處置函式:
空閒時辰處置函式的功用為:先對所製造的形體進行減小,當減小到一定程度(此處為0.1倍原大小)後,
再對形體進行擴充套件,當擴充套件到一定程度(此處為原大小)後,又初步進行減小,如此重複。程式中運用了
乙個靜態變數來標明擴充套件減小的情況。
*/void callback setscale()
{ static int zoomin = 0;
if(zoomin
OpenGL入門學習之OpenGL庫簡介
glu是實用庫,包含有43個函式,函式名的字首為glu。glu 為了減輕繁重的程式設計工作,封裝了opengl函式,glu函式通過呼叫核心庫的函式,為開發者提供相對簡單的用法,實現一些較為複雜的操作。glaux是opengl輔助庫,包含有31個函式,函式名字首為aux。這部分函式提供視窗管理 輸入輸...
mysql創庫創表語句 mysql 資料庫(1)
1 1.掌握創庫,創表的方法 創庫create database haha 使用庫use haha 創表1create table t1 id int 檢視所有表 show tables 插入資料 insert into t1 values 1 查詢所有資料 select from t1 刪除表dr...
Python jieba庫運用和詞云運用
一 安裝第三方庫 jieba庫和wordcloud庫是優秀的第三方庫,需要我們手動安裝這兩個庫。開啟cmd,分別輸入以下指令,即可安裝jieba庫和wordcloud庫 pip install jieba pip install wordcloud二 運用jieba庫分析一篇文章 這裡我選取的是作家...