這邊推薦兩個方便實用的程式碼,這樣可以節省一些不必要的時間,一個是負責控制攝影機的類別,一個是幫你畫出平面的板子。平面的板子可以方便你做一些額外的處理(像是Deferred Shading和texture space的操作等等,相當好用)
1. Camera.cs
camera類別主要是用來負責控制攝影機的,此類別是繼承GameComponent。
同時,Camera.cs是在SkiningModel的範例中所使用的,藉由這個類別你可以不用再花額外的時間寫關於Camera的程式碼。
A和D是對Y軸旋轉,W和S是對X軸做旋轉,Z和X是負責控制遠近。
使用方式:
這邊只是提供一種方式來使用這個類別,你可以針對你自己的需求在做更改。
1> 在Game.cs中,先引入這個類別的命名空間。 ->using DeferredShadingTutorial;
2> 宣告一個Camera物件。 ->Camera camera;
3> 在建構子當中建立(new)並把它增加到Component Stack裡面。
->camera = new Camera(this);
->Component.Add(camera);
由於本類別是GameComponent類別,所以當你把它加入Component stack的時候,XNA在每次呼叫base.Draw或是base.Update時,會幫你自動更新。
因此,當你按下鍵盤的ASDW按鍵時候,XNA會自動幫你更新Camera狀態。
4> 現在,Draw函數中,當你要畫模型需要使用到Camera的view、projection變數時,只要藉由camera.View和camera.Projection就可以取得相關的矩陣。2. QuadRenderer.cs
此類別主要是用來畫出平板。可以方便的使用在Deferred Shading和texture space相關的操作。
畫出的平板會給定座標和貼圖座標。這邊分享這兩個好用的程式碼,會在接下來的範例中跟各位慢慢介紹。
在右邊的"資源",有個叫做component.rar裡面包含這兩個檔案