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顯卡)可能大家看了應該就很高興了,竟然會用到DX10顯卡的功能!!
這意味是不是XNA開始提供DX 10的功能了呢!?

這是否定的!XNA主要架構還是建立在DX9的SDK上面,會使用DX10顯卡,主要是確保顯卡能夠提供足夠的功能
(包含貼圖格式的屬性、大小限制等等)

要如何設定現在使用的是Reach還是HiDef格式呢?
在Initialize的地方:
graphics.GraphicsProfile = GraphicsProfile.HiDef;

這樣就是設定顯像方式的貼圖設定是使用HiDef的規格。

目前個人見解是...  如果是PC或XBOX360的遊戲開發,直接使用HiDef的格式比較好,提供的支援比較大。

兩個模式比較結果如下。

 

Profiles Reach HiDef
支援平台 Windows Phone 7 Series, Xbox 360, 任何一種PC平台(顯卡須支援Shader Model 2.0以上)
Xbox 360, 任何一種PC平台(顯卡需支援DirectX10或更高版本)
Shader Model 2.0 (WP7不支援使用者自訂的渲染方式) 3.0+ (不過360上特有的Shader函數像是vfetch這部分PC沒辦法使用)
最大貼圖大小 2,048 4,096
最小貼圖大小 512 4,096
最大立體貼圖大小 並不支援立體貼圖 256
不需要2的指數次方貼圖

支援但是存有些限制(不支援Wrap重複貼圖模式、不支援MIPMAP、DXT壓縮格式需要2的指數次方)

支援
不需要2的指數次方的Cube map 不支援 支援
不需要2的指數次方的立體貼圖 不支援立體貼圖 支援
每次呼叫Draw指令所能處理的Primitive數量 65,535 1,048,575
Vertex Streams最大數量 16 16
Stream Stride最大數量 25 255
Index Buffer 格式 16 bit 16 and 32 bit
Vertex Element 格式 Color, Byte4, Single, Vector2, Vector3, Vector4, Short2, Short4, NormalizedShort2, NormalizedShort4 所有Reach可支援的格式, HalfVector2, HalfVector4
Texture格式 Color, Bgr565, Bgra5551, Bgra4444, NormalizedByte2, NormalizedByte4, Dxt1, Dxt3, Dxt5 所有Reach可支援的格式, plus Alpha8, Rg32, Rgba64, Rgba1010102, Single, Vector2, Vector4, HalfSingle, HalfVector2, HalfVector4; floating point texture formats do not support filtering
Vertex Texture 格式 不支援Vertex texturing Single, Vector2, Vector4, HalfSingle, HalfVector2, HalfVector4
Render Target 格式 呼叫QueryRenderTargetFormat()可以知道可以支援的格式 呼叫QueryRenderTargetFormat()可以知道可以支援的格式
Multiple Render Targets 不支援
最多可以到四張; 需要有相同的Depth大小、支援alpha blending
Occlusion Queries 不支援
支援
Separate Alpha Blend 不支援
支援
創作者介紹
創作者 teexit1224 的頭像
teexit1224

StreamWhite

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