加入BLOG ADS 寫手們來加入吧!

XNA 4.0提供狀態物件,狀態物件將原本以往零零散散的屬性設定變成一個單一個物件。
像原本3.0的時候,我們要將要將3D模型用網格畫出來,我需要設定特定的屬性。
設定Cull模式,也是要設應特定的屬性。
每次要找那些屬性都是一個頭兩個大,而在這次新的改版中,XNA 4.0提供
BlendState, DepthStencilState, RasterizerState, 和SamplerState,讓程式設計師使用。
比較常用的是
RasterizerState: 設定Cull模式(順時鐘或是逆時鐘),設定填滿模式(填滿或是網格)。
SamplerState: 設定貼圖取樣方式。在使用者自訂的shader code當中,我們可以在shader設定
貼圖取向的方式,如:
texture diffusemap;

teexit1224 發表在 痞客邦 留言(0) 人氣()

XNA 4.0在特效上面提供更多的選擇讓使用者選擇使用,而這些效果都是可以支援到Reach和HiDef兩個Profile。
這次XNA 4.0提供的特效如下所示:

1. Basic Effects: 提供基本的Blinn-Phong打光效果,這是在之前的XNA版本就有提供的操作,設計者可以
自行開啟打光效果,設定相關參數設定等等。
2. Dual Texture Effects: 雙重貼圖效果,使用兩張貼圖並使用混合的方式達到更多樣的效果。(像是使用者
可以先貼上基本的貼圖,然後再貼上一張細節貼圖,增加模型的好看效果)
3. Alpha Test Effects: 提供一種方式來做Alpha的測試效果。
4. Skinned Effects: 這個效果是提供給Skinned(3D模型的變形)所使用的效果。(最多可以支援到72個骨頭,
每個骨頭最多可以有四個不同的權重。
5. Environment Map Effects: 使用環境貼圖的特效。

基本上上述五個特效,主要是補足Reach的不足。因為Reach並不支援使用者自訂的特效。所以我們可以藉由上述
五個預設的特效來做到我們需要的效果。

teexit1224 發表在 痞客邦 留言(0) 人氣()

XNA 4.0在顯示上面(包含RenderTarget和一般直接顯像)有提供兩種不同的Profile,Profile根據文件所說指的就是硬體所提供的功能。

每個繪圖卡都可能會提供不同的功能,像是有些繪圖卡提供浮點數運算的材質貼圖,有些沒有這個功能等等。
在之前的XNA版本中,XNA主要受限這個限制所以有時候會發生一種情況...

明明寫了一個RT相關的程式,結果在自己的電腦跑不出來該有的效果,然後拿到別台又OK的情況...

在新版的XNA 4.0中,特別在RT上面提供兩種不同的格式: Reach和HiDef。

Reach主要適用於所有XNA可以支援的平台,包含PC、360和WP7等。
HiDef支援360和部分PC(需支援DX10顯卡)

teexit1224 發表在 痞客邦 留言(0) 人氣()

這部份算官方文件的一部分,因為剛好也在學習中,所以就把所知道的東西分享出來。

WP7最低解析度800*480。如果要從ZUNE的專案改到WP7,解析度部分需要調整。(ZUNE HD 480*272)(ZUNE240*320)
針對解析度調整的部分,有兩種方式可以設定:
1. 由美術手動調整材質資源的大小(像是貼圖的大小調整)。
2. 由內建的硬體調整(也就是更改目前顯示的解析度)。

teexit1224 發表在 痞客邦 留言(0) 人氣()

現在網路上面開始有些教學文件交使用者怎麼開發WP7的遊戲程式。

現在推薦一個簡易的PDF文件

裡面有交怎麼樣開發XNA的WP7遊戲程式

http://charlespetzold.com/phone/index.html

teexit1224 發表在 痞客邦 留言(1) 人氣()

接下來就是進行實作的部分,時做的部分這邊我只說明實作可能會想問的問題,詳細內容各位可以下載原始的程式碼。

(本範例程式碼,包含使用基本的basicEffect特效將模型顯示)

模型的部分,這邊我是使用OBJ檔案格式,在XNA Creater club上面有一個範例,裡面是使用自定的content pipeline來將obj檔案資訊分析出來,這邊我們就直接運用它即可。

在renderer.cs的程式碼中,裡面有一個函數use_BasicEffect程式碼如下

teexit1224 發表在 痞客邦 留言(0) 人氣()

這邊推薦兩個方便實用的程式碼,這樣可以節省一些不必要的時間,一個是負責控制攝影機的類別,一個是幫你畫出平面的板子。平面的板子可以方便你做一些額外的處理(像是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裡面包含這兩個檔案

teexit1224 發表在 痞客邦 留言(0) 人氣()