OpenGL運用輔佐庫創立規矩幾許目標

2022-05-13 11:56:22 字數 2985 閱讀 6767

輔佐類分類: 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庫分析一篇文章 這裡我選取的是作家...