為了能讓作為初學者的你學明白3D遊戲編程,我花費了17節的內容來講了一些「廢話」,只是希望你不要忽略這些「廢話」。3D遊戲編程實在是太複雜了,如果可以的話,我還想說一些更深層次的內容。但是我不能這麼做,過深的東西講得太多了,很容易「勸退」的。也就是說,你能把前面17節的內容完全掌握了,你的3D遊戲編程基礎就有了,接下來再講解代碼,你就很容易明白了。
從這一節開始,我們將要把整個3D遊戲示例程序的代碼講解一遍。由於有Direct3D的幫忙,我的程序代碼只有1000來行,所以,即便你是初學者,也是可以學明白這些代碼的。
「學」的部分
你知道一個程式設計師最煩的事情是什麼嗎?不是問題找不到思路,也不是代碼寫不出來,而是「被迫」去看其他程式設計師寫的代碼!
為什麼呢?因為看不懂啊!原本,程式設計師可以通過自己的思路來處理某個問題,可「領導」偏偏要讓自己看其他人的代碼。一般來講,這些代碼都沒有什麼注釋,如果過了幾個月的話,寫這些代碼的程式設計師都會看不懂自己當時寫了啥。我們在看這些代碼的時候,首先要分析代碼做了什麼事情,然後還要揣測這個程式設計師的思路是什麼。最關鍵的一點是,某些程式設計師給變量取名字的時候太隨意了,我們光猜測這個變量代表什麼,就會花費相當長的時間。所以,程式設計師真的很不喜歡看其他程式設計師寫的代碼。
我深深明白這一點。別看我寫的代碼只有1000來行,而且注釋比較全面,但是,其他程式設計師看起來也是很費勁的一件事情。所以,當我準備把這些代碼給你講明白的時候,一定要找一個好方法,否則,你會越看越迷糊。
為了找這個好方法,我真的思考了好久……
後來有一天,我和孩子一起玩積木的時候,突然就想到方法了!(其實,編程解決問題的時候,找到方法也是一瞬間的事情)方法其實很簡單——借鑑「搭積木」的思路。
我可以把整個3D遊戲程序代碼分塊,就好像變成了一塊、一塊的積木一樣。然後,我們先用這些「積木」拼接一個完整的程序,當你明白了整個的拼接過程後,我們再逐個積木來「解剖學習」,這樣的話,你就能完全掌握「其他人」寫的代碼了。
說得再具體一些就是兩步:
1.先了解整個代碼的結構,知道代碼由哪些部分組成;
2.然後,逐個分析每一個組成部分。
好了,既然有了方法,我們就開始吧!
在這一節,我們就先把整個代碼的結構熟悉一下,然後,用剩下的章節來說清楚每一個組成部分是什麼樣子的。
為了能讓你明白遊戲編程的思考過程,我就按照編程思路來說明整個代碼的結構吧,實際上非常簡單,只有下面3個方面。