下一段**繪製貼圖立方體。我只對新增的**進行註解。如果您對沒有註解的**有疑問,回頭看看第六課。
int drawglscene(glvoid) //從這裡開始進行所有的繪製
現在轉入winmain()主函式。我們將在這裡增加開關光源、旋轉木箱、切換過濾方式以及將木箱移近移遠的控制**。在接近winmain()函式結束的地方你會看到swapbuffers(hdc)這行**。然後就在這一行後面新增如下的**。
**將檢查l鍵是否按下過。如果l鍵已按下,但lp的值不是false的話,意味著l鍵還沒有鬆開,這時什麼都不會發生。
swapbuffers(hdc); //交換快取
if (keys['
l'] && !lp) //
l 鍵已按下並且鬆開了?
else
//否則
}
下面的**檢視是否鬆開了"l"鍵。如果鬆開,變數lp將設為false。這意味著"l"鍵沒有按下。如果不作此檢查,光源第一次開啟之後,就無法再關掉了。計算機會以為"l"鍵一直按著呢。
if (!keys['l']) //
l鍵鬆開了麼?
然後對"f"鍵作相似的檢查。如果有按下"f"鍵並且"f"鍵沒有處於按著的狀態或者它就從沒有按下過,將變數fp設為true。這意味著這個鍵正被按著呢。接著將filter變數加一。如果filter變數大於2(因為這裡我們的使用的陣列是texture[3],大於2的紋理不存在),我們重置filter變數為0。
if (keys['f'] && !fp) //
f鍵按下了麼?
}if (!keys['
f']) //
f鍵放開了麼?
這四行檢查是否按下了pageup鍵。若是的話,減少z變數的值。這樣drawglscene函式中包含的gltranslatef(0.0f,0.0f,z)呼叫將使木箱離觀察者更遠一點。
if (keys[vk_prior]) //pageup按下了?
接著四行檢查pagedown鍵是否按下,若是的話,增加z變數的值。這樣drawglscene函式中包含的gltranslatef(0.0f,0.0f,z)呼叫將使木箱向著觀察者移近一點。
if (keys[vk_next]) //pagedown按下了麼
現在檢查方向鍵。按下左右方向鍵xspeed相應減少或增加。按下上下方向鍵yspeed相應減少或增加。記住在以後的教程中如果xspeed、yspeed的值增加的話,立方體就轉的更快。如果一直按著某個方向鍵,立方體會在那個方向上轉的越快。
if (keys[vk_up]) //up方向鍵按下了麼?
if (keys[vk_down]) //
down方向鍵按下了麼?
if (keys[vk_right]) //
right方向鍵按下了麼?
if (keys[vk_left]) //
left方向鍵按下了麼?
像前幾課一樣,我們最後還需要更正窗體的標題。
if (keys[vk_f1]) //f1按下了麼?}}
}}
//關閉
killglwindow();
//銷毀視窗
return (msg.wparam); //
退出程式
}
這一課完了之後,您應該學會建立和使用這三種不同的紋理對映過濾方式。並使用鍵盤和場景中的物件互動。最後,您應該學會在場景中應用簡單的光源,使得場景看起來更逼真。
第七課 光照和鍵盤
這一課我會教您如何使用三種不同的紋理濾波方式。教您如何使用鍵盤來移動場景中的物件,還會教您在opengl場景中應用簡單的光照。這一課包含了很多內容,如果您對前面的課程有疑問的話,先回頭複習一下。進入後面的 之前,很好的理解基礎知識十分重要。我們要在第一課的 上進行改動就可以了。我們將要增加乙個loa...
NeHe OpenGL第七課 光照和鍵盤
nehe opengl第七課 光照和鍵盤 光照和鍵盤控制 在這一課裡,我們將新增光照和鍵盤控制,它讓程式看起來更美觀。這一課我會教您如何使用三種不同的紋理濾波方式。教您如何使用鍵盤來移動場景中的物件,還會教您在opengl場景中應用簡單的光照。這一課包含了很多內容,如果您對前面的課程有疑問的話,先回...
OpenGL 光照和材質
opengl 光照和材質 前言 很難受呀,一天又過去了,沒有達到預期的進度,等下寫完這篇部落格,抓緊研究滑鼠實現軌跡球!長路漫漫啊 注 此篇文章建立在mfc環境搭建完成後 1.渲染處理 在opengl中,可以定義頂點的顏色,但如何定義線段的顏色,如何定義平面的顏色,這就需要opengl通過各個頂點的...