D3DRENDERSTATETYPE 列舉
轉譯狀態會定義各種頂點和圖元處理的設定狀態。 某些轉譯狀態會設定頂點處理,有些設定圖元處理 (請參閱 轉譯狀態 (Direct3D 9) ) 。 轉譯狀態可以使用 stateblock 儲存和還原 (請參閱 狀態欄塊儲存和還原狀態 (Direct3D 9) ) 。
Syntax
typedef enum D3DRENDERSTATETYPE {
D3DRS_ZENABLE = 7,
D3DRS_FILLMODE = 8,
D3DRS_SHADEMODE = 9,
D3DRS_ZWRITEENABLE = 14,
D3DRS_ALPHATESTENABLE = 15,
D3DRS_LASTPIXEL = 16,
D3DRS_SRCBLEND = 19,
D3DRS_DESTBLEND = 20,
D3DRS_CULLMODE = 22,
D3DRS_ZFUNC = 23,
D3DRS_ALPHAREF = 24,
D3DRS_ALPHAFUNC = 25,
D3DRS_DITHERENABLE = 26,
D3DRS_ALPHABLENDENABLE = 27,
D3DRS_FOGENABLE = 28,
D3DRS_SPECULARENABLE = 29,
D3DRS_FOGCOLOR = 34,
D3DRS_FOGTABLEMODE = 35,
D3DRS_FOGSTART = 36,
D3DRS_FOGEND = 37,
D3DRS_FOGDENSITY = 38,
D3DRS_RANGEFOGENABLE = 48,
D3DRS_STENCILENABLE = 52,
D3DRS_STENCILFAIL = 53,
D3DRS_STENCILZFAIL = 54,
D3DRS_STENCILPASS = 55,
D3DRS_STENCILFUNC = 56,
D3DRS_STENCILREF = 57,
D3DRS_STENCILMASK = 58,
D3DRS_STENCILWRITEMASK = 59,
D3DRS_TEXTUREFACTOR = 60,
D3DRS_WRAP0 = 128,
D3DRS_WRAP1 = 129,
D3DRS_WRAP2 = 130,
D3DRS_WRAP3 = 131,
D3DRS_WRAP4 = 132,
D3DRS_WRAP5 = 133,
D3DRS_WRAP6 = 134,
D3DRS_WRAP7 = 135,
D3DRS_CLIPPING = 136,
D3DRS_LIGHTING = 137,
D3DRS_AMBIENT = 139,
D3DRS_FOGVERTEXMODE = 140,
D3DRS_COLORVERTEX = 141,
D3DRS_LOCALVIEWER = 142,
D3DRS_NORMALIZENORMALS = 143,
D3DRS_DIFFUSEMATERIALSOURCE = 145,
D3DRS_SPECULARMATERIALSOURCE = 146,
D3DRS_AMBIENTMATERIALSOURCE = 147,
D3DRS_EMISSIVEMATERIALSOURCE = 148,
D3DRS_VERTEXBLEND = 151,
D3DRS_CLIPPLANEENABLE = 152,
D3DRS_POINTSIZE = 154,
D3DRS_POINTSIZE_MIN = 155,
D3DRS_POINTSPRITEENABLE = 156,
D3DRS_POINTSCALEENABLE = 157,
D3DRS_POINTSCALE_A = 158,
D3DRS_POINTSCALE_B = 159,
D3DRS_POINTSCALE_C = 160,
D3DRS_MULTISAMPLEANTIALIAS = 161,
D3DRS_MULTISAMPLEMASK = 162,
D3DRS_PATCHEDGESTYLE = 163,
D3DRS_DEBUGMONITORTOKEN = 165,
D3DRS_POINTSIZE_MAX = 166,
D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
D3DRS_COLORWRITEENABLE = 168,
D3DRS_TWEENFACTOR = 170,
D3DRS_BLENDOP = 171,
D3DRS_POSITIONDEGREE = 172,
D3DRS_NORMALDEGREE = 173,
D3DRS_SCISSORTESTENABLE = 174,
D3DRS_SLOPESCALEDEPTHBIAS = 175,
D3DRS_ANTIALIASEDLINEENABLE = 176,
D3DRS_MINTESSELLATIONLEVEL = 178,
D3DRS_MAXTESSELLATIONLEVEL = 179,
D3DRS_ADAPTIVETESS_X = 180,
D3DRS_ADAPTIVETESS_Y = 181,
D3DRS_ADAPTIVETESS_Z = 182,
D3DRS_ADAPTIVETESS_W = 183,
D3DRS_ENABLEADAPTIVETESSELLATION = 184,
D3DRS_TWOSIDEDSTENCILMODE = 185,
D3DRS_CCW_STENCILFAIL = 186,
D3DRS_CCW_STENCILZFAIL = 187,
D3DRS_CCW_STENCILPASS = 188,
D3DRS_CCW_STENCILFUNC = 189,
D3DRS_COLORWRITEENABLE1 = 190,
D3DRS_COLORWRITEENABLE2 = 191,
D3DRS_COLORWRITEENABLE3 = 192,
D3DRS_BLENDFACTOR = 193,
D3DRS_SRGBWRITEENABLE = 194,
D3DRS_DEPTHBIAS = 195,
D3DRS_WRAP8 = 198,
D3DRS_WRAP9 = 199,
D3DRS_WRAP10 = 200,
D3DRS_WRAP11 = 201,
D3DRS_WRAP12 = 202,
D3DRS_WRAP13 = 203,
D3DRS_WRAP14 = 204,
D3DRS_WRAP15 = 205,
D3DRS_SEPARATEALPHABLENDENABLE = 206,
D3DRS_SRCBLENDALPHA = 207,
D3DRS_DESTBLENDALPHA = 208,
D3DRS_BLENDOPALPHA = 209,
D3DRS_FORCE_DWORD = 0x7fffffff
} D3DRENDERSTATETYPE, *LPD3DRENDERSTATETYPE;
常數
-
D3DRS_ZENABLE
-
深度緩衝狀態做為 D3DZBUFFERTYPE 列舉類型的一個成員。 將此狀態設定為 D3DZB_TRUE 以啟用 z 緩衝、D3DZB_USEW啟用 w 緩衝,或D3DZB_FALSE停用深度緩衝。
如果深度樣板與交換鏈結一起建立,請將 D3DPRESENT_PARAMETERS 結構的 EnableAutoDepthStencil 成員設定為 TRUE,否則 D3DZB_FALSE會D3DZB_TRUE這個轉譯狀態的預設值。
-
D3DRS_FILLMODE
-
D3DFILLMODE列舉類型的一或多個成員。 預設值為 D3DFILL_SOLID。
-
D3DRS_SHADEMODE
-
D3DSHADEMODE列舉類型的一或多個成員。 預設值為 D3DSHADE_GOURAUD。
-
D3DRS_ZWRITEENABLE
-
TRUE 可讓應用程式寫入深度緩衝區。 預設值為 TRUE。 此成員可讓應用程式防止系統使用新的深度值來更新深度緩衝區。 如果 為 FALSE,則仍會根據轉譯狀態D3DRS_ZFUNC進行深度比較,假設發生深度緩衝,但深度值不會寫入緩衝區。
-
D3DRS_ALPHATESTENABLE
-
TRUE 表示啟用每個圖元 Alpha 測試。 如果測試通過,圖元就會由畫面緩衝區處理。 否則,會略過圖元的所有框架緩衝區處理。
測試的方法是使用D3DRS_ALPHAFUNC轉譯狀態所提供的比較函式,來比較傳入的 Alpha 值與參考 Alpha 值。 參考 Alpha 值是由為 D3DRS_ALPHAREF設定的值所決定。 如需詳細資訊,請參閱 Alpha 測試狀態 (Direct3D 9) 。
此參數的預設值為 FALSE。
-
D3DRS_LASTPIXEL
-
預設值為 TRUE,可啟用線條中最後一個圖元的繪製。 若要防止繪製最後一個圖元,請將此值設定為 FALSE。 如需詳細資訊,請參閱 大綱和填滿狀態 (Direct3D 9) 。
-
D3DRS_SRCBLEND
-
D3DBLEND列舉型別的一個成員。 預設值為 D3DBLEND_ONE。
-
D3DRS_DESTBLEND
-
D3DBLEND列舉型別的一個成員。 預設值為 D3DBLEND_ZERO。
-
D3DRS_CULLMODE
-
指定回溯三角形在完全情況下如何擷取。 這可以設定為 D3DCULL 列舉類型的一個成員。 預設值為 D3DCULL_CCW。
-
D3DRS_ZFUNC
-
D3DCMPFUNC列舉類型的一個成員。 預設值為 D3DCMP_LESSEQUAL。 此成員可讓應用程式根據相機的距離來接受或拒絕圖元。
圖元的深度值會與深度緩衝區值進行比較。 如果圖元的深度值通過比較函式,則會寫入圖元。
只有當轉譯狀態為 TRUE時,深度值才會寫入深度緩衝區。
如果深度測試失敗,軟體點陣化和許多硬體加速器會更快運作,因為若圖元未轉譯,就不需要篩選並調整紋理。
-
D3DRS_ALPHAREF
-
值,指定啟用 Alpha 測試時所測試圖元的參考 Alpha 值。 這是 DWORD 轉譯狀態值的低 8 位中放置的 8 位值。 值的範圍可以從0x00000000到0x000000FF。 預設值為 0。
-
D3DRS_ALPHAFUNC
-
D3DCMPFUNC列舉類型的一個成員。 預設值為 D3DCMP_ALWAYS。 此成員可讓應用程式根據其 Alpha 值接受或拒絕圖元。
-
D3DRS_DITHERENABLE
-
TRUE 表示啟用任一項。 預設值為 FALSE。
-
D3DRS_ALPHABLENDENABLE
-
TRUE 可啟用 Alpha 混合透明度。 預設值為 FALSE。
Alpha 混合的類型取決於D3DRS_SRCBLEND和D3DRS_DESTBLEND轉譯狀態。
-
D3DRS_FOGENABLE
-
TRUE 可啟用水氣混合。 預設值為 FALSE。 如需使用水氣混合的詳細資訊,請參閱 模糊。
-
D3DRS_SPECULARENABLE
-
TRUE 可啟用反射醒目提示。 預設值為 FALSE。
反射醒目提示的計算方式,就像物件中的每個頂點都位於物件的原點。 只要物件是以原點模型化,而且從光線到物件的距離相對大,這就會提供預期的結果。 在其他情況下,結果為未定義。
當這個成員設定為 TRUE時,反射色彩會新增至紋理串聯之後的基底色彩,但在 Alpha 混合之前。
-
D3DRS_FOGCOLOR
-
類型為 D3DCOLOR 的值。 預設值為 0。 如需有關模糊色彩的詳細資訊,請參閱 (Direct3D 9) 。
-
D3DRS_FOGTABLEMODE
-
要用於圖元模糊的模糊公式。 設定為 D3DFOGMODE 列舉型別的其中一個成員。 預設值為 D3DFOG_NONE。 如需圖元模糊的詳細資訊,請參閱 圖元模糊 (Direct3D 9) 。
-
D3DRS_FOGSTART
-
圖元或頂點模糊效果開始的深度,以線性模糊模式開始。 預設值為 0.0f。 深度是在世界空間中指定,用於頂點模糊,以及裝置空間 [0.0,1.0] 或世界空間用於圖元模糊。 對於圖元模糊,當系統使用 z 進行水氣計算時,這些值會位於裝置空間中,而當系統使用眼球相對的模糊 (w-fog) 時, 世界空間。 如需詳細資訊,請參閱 Direct3D 9 () 和 眼球相對與 Z 型深度。
這個轉譯狀態的值是浮點值。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
pDevice9->SetRenderState(D3DRS_FOGSTART, *((DWORD*) (&fFogStart))); -
D3DRS_FOGEND
-
線性模糊模式的圖元或頂點模糊效果結束的深度。 預設值為 1.0f。 深度是在世界空間中指定,用於頂點模糊,以及裝置空間 [0.0,1.0] 或世界空間用於圖元模糊。 對於圖元模糊,當系統使用 z 進行水氣計算,而當系統使用眼球相對的模糊 (w-fog) 時,這些值就會在裝置空間中。 如需詳細資訊,請參閱 Direct3D 9 () 和 眼球相對與 Z 型深度。
這個轉譯狀態的值是浮點值。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
m_pDevice9->SetRenderState(D3DRS_FOGEND, *((DWORD*) (&fFogEnd))); -
D3DRS_FOGDENSITY
-
圖元或頂點模糊的模糊密度,用於指數型模糊模式 (D3DFOG_EXP和D3DFOG_EXP2) 。 有效的密度值範圍從 0.0 到 1.0。 預設值為 1.0。 如需詳細資訊,請參閱 (Direct3D 9) 。
這個轉譯狀態的值是浮點值。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
m_pDevice9->SetRenderState(D3DRS_FOGDENSITY, *((DWORD*) (&fFogDensity))); -
D3DRS_RANGEFOGENABLE
-
TRUE 可啟用以範圍為基礎的頂點模糊。 預設值為 FALSE,在此情況下,系統會使用深度型的模糊。 在以範圍為基礎的模糊中,物件與檢視器之間的距離是用來計算水氣效果,而不是物件 (的深度,也就是場景中的 z 座標) 。 在範圍型的模糊中,所有模糊方法都會如往常般運作,不同之處在于它們會使用範圍,而不是計算中的深度。
範圍是用於模糊計算的正確因素,但通常會使用深度,因為範圍很耗時,計算和深度通常已可供使用。 當檢視器的眼睛移動時,使用深度來計算模糊有不想要的效果,而讓周邊物件的模糊變更,在此案例中,深度變更和範圍會維持不變。
因為目前沒有硬體支援以每個圖元範圍為基礎的模糊,所以只會針對頂點模糊提供範圍更正。
如需詳細資訊,請參閱 頂點模糊 (Direct3D 9) 。
-
D3DRS_STENCILENABLE
-
TRUE 表示啟用 stenciling 或 FALSE 以停用 stenciling。 預設值為 FALSE。 如需詳細資訊,請參閱 Direct3D 9 (樣板緩衝區技術) 。
-
D3DRS_STENCILFAIL
-
樣板測試失敗時要執行的樣板作業。 值來自 D3DSTENCILOP 列舉型別。 預設值為 D3DSTENCILOP_KEEP。
-
D3DRS_STENCILZFAIL
-
樣板測試通過且深度測試 (z 測試失敗) 時,要執行的樣板作業。 值來自 D3DSTENCILOP 列舉型別。 預設值為 D3DSTENCILOP_KEEP。
-
D3DRS_STENCILPASS
-
樣板作業,如果樣板和深度 (z) 測試通過,則執行樣板作業。 值來自 D3DSTENCILOP 列舉型別。 預設值為 D3DSTENCILOP_KEEP。
-
D3DRS_STENCILFUNC
-
樣板測試的比較函式。 值來自 D3DCMPFUNC 列舉型別。 預設值為 D3DCMP_ALWAYS。
比較函式可用來比較參考值與樣板緩衝區專案。 此比較僅適用于由D3DRS_STENCILMASK轉譯狀態所設定之樣板 (遮罩中所設定之參考值和樣板緩衝區專案中的位) 。 如果 為 TRUE,樣板測試就會通過。
-
D3DRS_STENCILREF
-
樣板測試的 int 參考值。 預設值為 0。
-
D3DRS_STENCILMASK
-
套用至參考值和每個樣板緩衝區專案的遮罩,以判斷樣板測試的重要位。 預設遮罩0xFFFFFFFF。
-
D3DRS_STENCILWRITEMASK
-
寫入遮罩套用至寫入樣板緩衝區的值。 預設遮罩0xFFFFFFFF。
-
D3DRS_TEXTUREFACTOR
-
用於多重紋理混合的色彩與D3DTA_TFACTOR紋理混合引數或D3DTOP_BLENDFACTORALPHA紋理混合作業。 相關聯的值是 D3DCOLOR 變數。 預設值為不透明 (0xFFFFFFFF) 。
-
D3DRS_WRAP0
-
多組紋理座標的紋理換行行為。 這個轉譯狀態的有效值可以是D3DWRAPCOORD_0 (或D3DWRAP_U) 、D3DWRAPCOORD_1 (或D3DWRAP_V) 、D3DWRAPCOORD_2 (或D3DWRAP_W) ,以及D3DWRAPCOORD_3旗標的任何組合。 這些會導致系統在給定紋理的第一個、第二個、第三個和第四個維度的方向換行,有時稱為 s、t、r 和 q 方向。 此轉譯狀態的預設值為 0, (在所有方向) 停用換行。
-
D3DRS_WRAP1
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP2
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP3
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP4
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP5
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP6
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP7
-
請參閱D3DRS_WRAP0。
-
D3DRS_CLIPPING
-
TRUE 是表示 啟用 Direct3D 的基本裁剪,或 FALSE 以停用它。 預設值為 TRUE。
-
D3DRS_LIGHTING
-
TRUE 表示啟用 Direct3D 光源或 FALSE 來停用它。 預設值為 TRUE。 只有包含頂點一般頂點的頂點已正確亮起;不包含一般頂點的頂點會在所有光源計算中採用 0 點乘積。
-
D3DRS_AMBIENT
-
環境光線色彩。 此值的類型為 D3DCOLOR。 預設值為 0。
-
D3DRS_FOGVERTEXMODE
-
要用於頂點模糊的模糊公式。 設定為 D3DFOGMODE 列舉類型的其中一個成員。 預設值為 D3DFOG_NONE。
-
D3DRS_COLORVERTEX
-
TRUE 表示啟用每個頂點色彩或 FALSE 來停用它。 預設值為 TRUE。 啟用每個頂點色彩可讓系統在其光源計算中包含針對個別頂點定義的色彩。
如需詳細資訊,請參閱下列轉譯狀態:
- D3DRS_DIFFUSEMATERIALSOURCE
- D3DRS_SPECULARMATERIALSOURCE
- D3DRS_AMBIENTMATERIALSOURCE
- D3DRS_EMISSIVEMATERIALSOURCE
-
D3DRS_LOCALVIEWER
-
TRUE 表示啟用相機相對反射醒目提示,或 FALSE 使用正交反射醒目提示。 預設值為 TRUE。 使用正交投影的應用程式應該指定 FALSE。
-
D3DRS_NORMALIZENORMALS
-
TRUE 表示啟用頂點法線的自動正規化,或 啟用 FALSE 來停用。 預設值為 FALSE。 啟用此功能會導致系統在將頂點轉換成相機空間之後,將頂點的頂點常態正規化,這很費時。
-
D3DRS_DIFFUSEMATERIALSOURCE
-
光源計算的擴散色彩來源。 有效值為 D3DMATERIALCOLORSOURCE 列舉型別的成員。 預設值為 D3DMCS_COLOR1。 只有當D3DRS_COLORVERTEX轉譯狀態設定為 TRUE時,才會使用此轉譯狀態的值。
-
D3DRS_SPECULARMATERIALSOURCE
-
光源計算的反射色彩來源。 有效值為 D3DMATERIALCOLORSOURCE 列舉型別的成員。 預設值為 D3DMCS_COLOR2。
-
D3DRS_AMBIENTMATERIALSOURCE
-
光源計算的環境色彩來源。 有效值為 D3DMATERIALCOLORSOURCE 列舉型別的成員。 預設值為 D3DMCS_MATERIAL。
-
D3DRS_EMISSIVEMATERIALSOURCE
-
光源計算的放射色彩來源。 有效值為 D3DMATERIALCOLORSOURCE 列舉型別的成員。 預設值為 D3DMCS_MATERIAL。
-
D3DRS_VERTEXBLEND
-
如果有的話,用來執行幾何混合的矩陣數目。 有效值為 D3DVERTEXBLENDFLAGS 列舉型別的成員。 預設值為 D3DVBF_DISABLE。
-
D3DRS_CLIPPLANEENABLE
-
啟用或停用使用者定義的裁剪平面。 有效值為任何 DWORD,其中每個位的狀態 (集或未設定) 切換對應使用者定義裁剪平面的啟用狀態。 最小有效位 (位 0) 控制索引 0 的第一個裁剪平面,而後續位則會控制在較高索引處啟用裁剪平面。 如果設定了位,系統會在場景轉譯期間套用適當的裁剪平面。 預設值為 0。
D3DCLIPPLANEn宏會定義為提供方便的方式來啟用裁剪平面。
-
D3DRS_POINTSIZE
-
浮點數值,指定在未針對每個頂點指定點大小的情況下,用於點大小計算的大小。 當頂點包含點大小時,不會使用此值。 如果D3DRS_POINTSCALEENABLE為 FALSE,此值會以螢幕空間單位表示;否則,這個值會以世界空間單位表示。 預設值是驅動程式傳回的值。 如果驅動程式傳回 0 或 1,則預設值為 64,允許軟體點大小模擬。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
m_pDevice9->SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&pointSize)); -
D3DRS_POINTSIZE_MIN
-
指定點基本類型大小下限的浮點值。 轉譯期間,點基本類型會固定到這個大小。 將此設定為小於 1.0 的值會導致點在點未涵蓋圖元中心且反鋸齒已停用,或在啟用反鋸齒時以降低強度轉譯時,就會捨棄點。 預設值為 1.0f。 這個值的範圍大於或等於 0.0f。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
m_pDevice9->SetRenderState(D3DRS_POINTSIZE_MIN, *((DWORD*)&pointSizeMin)); -
D3DRS_POINTSPRITEENABLE
-
bool 值。 當 為 TRUE時,會設定點基本類型的紋理座標,以便在每個點上對應完整紋理。 當 為 FALSE時,頂點紋理座標會用於整個點。 預設值為 FALSE。 您可以將 D3DRS_POINTSCALEENABLE 設定為 FALSE ,並將 D3DRS_POINTSIZE設為 1.0,也就是預設值,以達到 DirectX 7 樣式的單圖元點。
-
D3DRS_POINTSCALEENABLE
-
bool 值,控制點基本類型的大小計算。 當 為 TRUE時,點大小會解譯為相機空間值,並依距離函數和 frustum 縮放,以檢視區 Y 軸縮放來計算最終螢幕空間點大小。 當 為 FALSE時,點大小會解譯為螢幕空間,並直接使用。 預設值為 FALSE。
-
D3DRS_POINTSCALE_A
-
浮點基本類型控制以距離為基礎的大小衰減。 只有在D3DRS_POINTSCALEENABLE為 TRUE時,才會作用中。 預設值為 1.0f。 這個值的範圍大於或等於 0.0f。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
m_pDevice9->SetRenderState(D3DRS_POINTSCALE_A, *((DWORD*)&pointScaleA)); -
D3DRS_POINTSCALE_B
-
浮點基本類型控制以距離為基礎的大小衰減。 只有在D3DRS_POINTSCALEENABLE為 TRUE時,才會作用中。 預設值為 0.0f。 這個值的範圍大於或等於 0.0f。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
m_pDevice9->SetRenderState(D3DRS_POINTSCALE_B, *((DWORD*)&pointScaleB)); -
D3DRS_POINTSCALE_C
-
浮點基本類型控制以距離為基礎的大小衰減。 只有在D3DRS_POINTSCALEENABLE為 TRUE時,才會作用中。 預設值為 0.0f。 這個值的範圍大於或等於 0.0f。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
m_pDevice9->SetRenderState(D3DRS_POINTSCALE_C, *((DWORD*)&pointScaleC)); -
D3DRS_MULTISAMPLEANTIALIAS
-
bool 值,決定使用多重取樣轉譯目標緩衝區時,個別樣本的計算方式。 當設定為 TRUE時,會計算多個樣本,以便針對每個多個樣本在不同的樣本位置進行取樣,以執行全場景反鋸齒。 當設定為 FALSE時,會以相同的樣本值寫入多個樣本,並取樣在圖元中心,以允許對多重取樣緩衝區進行非反鋸齒轉譯。 當轉譯為單一範例緩衝區時,此轉譯狀態沒有任何作用。 預設值為 TRUE。
-
D3DRS_MULTISAMPLEMASK
-
此遮罩中的每個位,從至少有效位 (LSB) 開始,控制多重取樣轉譯目標中的其中一個樣本修改。 因此,針對 8 個樣本轉譯目標,低位元組包含八個樣本的八個寫入啟用。 當轉譯為單一範例緩衝區時,此轉譯狀態沒有任何作用。 預設值為 0xFFFFFFFF。
此轉譯狀態可讓您使用多重取樣緩衝區作為累積緩衝區,並執行幾何的多階段轉譯,其中每個傳遞都會更新樣本子集。
如果有 n 個多重取樣和已啟用 k 的樣本,轉譯影像產生的強度應該是 k/n。 每個圖元的每個元件 RGB 都會由 k/n 分解。
-
D3DRS_PATCHEDGESTYLE
-
設定修補邊緣是否會使用浮點數樣式鑲嵌。 可能的值為 D3DPATCHEDGESTYLE 列舉類型所定義。 預設值為 D3DPATCHEDGE_DISCRETE。
-
D3DRS_DEBUGMONITORTOKEN
-
僅針對偵錯監視器進行設定。 可能的值是由 D3DDEBUGMONITORTOKENS 列舉類型所定義。 請注意,如果已設定D3DRS_DEBUGMONITORTOKEN,則會將呼叫視為將權杖傳遞至偵錯監視器。 例如,如果在將D3DDMT_ENABLE或D3DDMT_DISABLE傳遞至D3DRS_DEBUGMONITORTOKEN之後,其他權杖值會傳入,偵錯監視器的狀態 (啟用或停用) 仍會保存。
此狀態只適用于偵錯組建。 偵錯監視器預設為 D3DDMT_ENABLE。
-
D3DRS_POINTSIZE_MAX
-
浮點數,指定將限制點 Sprite 的大小上限。 此值必須小於或等於 D3DCAPS9 的 MaxPointSize 成員,且大於或等於D3DRS_POINTSIZE_MIN。 預設值為 64.0。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
m_pDevice9->SetRenderState(D3DRS_PONTSIZE_MAX, *((DWORD*)&pointSizeMax)); -
D3DRS_INDEXEDVERTEXBLENDENABLE
-
可啟用或停用索引頂點混合的 bool 值。 預設值為 FALSE。 當設定為 TRUE時,會啟用已編制索引的頂點混合。 當設定為 FALSE時,會停用已編制索引的頂點混合。 如果啟用此轉譯狀態,使用者必須傳遞矩陣索引做為封裝的 DWORD 與每個頂點。 停用轉譯狀態並透過D3DRS_VERTEXBLEND狀態啟用頂點混合時,相當於在每個頂點中具有矩陣索引 0、1、2、3。
-
D3DRS_COLORWRITEENABLE
-
UINT 值,可針對轉譯目標色彩緩衝區啟用每個通道寫入。 設定位會導致在 3D 轉譯期間更新色彩通道。 清除位會導致色彩色板不受影響。 如果裝置的 D3DCAPS9 結構的 PrimitiveMiscCaps 成員中設定了 D3DPMISCCAPS_COLORWRITEENABLE 功能位,即可使用此功能。 此轉譯狀態不會影響清除作業。 預設值為 0x0000000F。
這個轉譯狀態的有效值可以是D3DCOLORWRITEENABLE_ALPHA、D3DCOLORWRITEENABLE_BLUE、D3DCOLORWRITEENABLE_GREEN或D3DCOLORWRITEENABLE_RED旗標的任何組合。
-
D3DRS_TWEENFACTOR
-
控制 tween 因數的浮點數。 預設值為 0.0f。 因為 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,所以您的應用程式必須轉換包含值的變數,如下列程式碼範例所示。
m_pDevice9->SetRenderState(D3DRS_TWEENFACTOR, *((DWORD*)&TweenFactor)); -
D3DRS_BLENDOP
-
當 Alpha 混合轉譯狀態D3DRS_ALPHABLENDENABLE設為 TRUE時,用來選取套用的算數運算值。 有效值是由 D3DBLENDOP 列舉類型所定義。 預設值為 D3DBLENDOP_ADD。
如果不支援D3DPMISCCAPS_BLENDOP裝置功能,則會執行D3DBLENDOP_ADD。
-
D3DRS_POSITIONDEGREE
-
N 修補程式位置插補度。 這些值可以D3DDEGREE_CUBIC (預設) 或D3DDEGREE_LINEAR。 如需詳細資訊,請參閱 D3DDEGREETYPE。
-
D3DRS_NORMALDEGREE
-
N 修補一般插補度。 這些值可以是預設) 或D3DDEGREE_QUADRATIC D3DDEGREE_LINEAR (。 如需詳細資訊,請參閱 D3DDEGREETYPE。
-
D3DRS_SCISSORTESTENABLE
-
TRUE 表示啟用剪刀測試,並停用 FALSE 。 預設值為 FALSE。
-
D3DRS_SLOPESCALEDEPTHBIAS
-
用來判斷可套用多少偏差來共同平面基本類型,以減少 Z 衝突。 預設值為 0。
bias = (max * D3DRS_SLOPESCALEDEPTHBIAS) + D3DRS_DEPTHBIAS。
其中 max 是轉譯三角形的最大深度斜率。
-
D3DRS_ANTIALIASEDLINEENABLE
-
TRUE 表示啟用行反鋸齒, FALSE 表示停用行反鋸齒。 預設值為 FALSE。
轉譯為多重取樣轉譯目標時,會忽略D3DRS_ANTIALIASEDLINEENABLE,而且所有線條都會轉譯為別名。 在多重取樣轉譯目標中使用 ID3DXLine 進行反鋸齒線條轉譯。
-
D3DRS_MINTESSELLATIONLEVEL
-
最小鑲嵌層級。 預設值為 1.0f。 請參閱 Tessellation (Direct3D 9) 。
-
D3DRS_MAXTESSELLATIONLEVEL
-
鑲嵌層級上限。 預設值為 1.0f。 請參閱 Tessellation (Direct3D 9) 。
-
D3DRS_ADAPTIVETESS_X
-
以 x 方向調適型 tessellate 的數量。 預設值為 0.0f。 請參閱 自適性鑲嵌。
-
D3DRS_ADAPTIVETESS_Y
-
以 y 方向調適型 tessellate 的數量。 預設值為 0.0f。 請參閱 Adaptive_Tessellation。
-
D3DRS_ADAPTIVETESS_Z
-
以 z 方向調適型 tessellate 的數量。 預設值為 1.0f。 請參閱 Adaptive_Tessellation。
-
D3DRS_ADAPTIVETESS_W
-
以 w 方向調整為自適性 tessellate 的數量。 預設值為 0.0f。 請參閱 Adaptive_Tessellation。
-
D3DRS_ENABLEADAPTIVETESSELLATION
-
TRUE 表示啟用自適性鑲嵌, FALSE 表示停用。 預設值為 FALSE。 請參閱 Adaptive_Tessellation。
-
D3DRS_TWOSIDEDSTENCILMODE
-
TRUE 會啟用雙面擴充, FALSE 會停用它。 預設值為 FALSE。 應用程式應該將D3DRS_CULLMODE設定為 D3DCULL_NONE,以啟用雙面樣板模式。 如果三角形彎曲順序為順時針順序,則會使用D3DRS_STENCIL* 作業。 如果繞線順序為逆時針,則會使用D3DRS_CCW_STENCIL* 作業。
若要查看是否支援雙面樣板,請檢查 D3DCAPS9 的 StencilCaps 成員是否有D3DSTENCILCAPS_TWOSIDED。 另請參閱 D3DSTENCILCAPS。
-
D3DRS_CCW_STENCILFAIL
-
如果 CCW 樣板測試失敗,要執行的樣板作業。 值來自 D3DSTENCILOP 列舉類型。 預設值為 D3DSTENCILOP_KEEP。
-
D3DRS_CCW_STENCILZFAIL
-
如果 CCW 樣板測試通過且 z 測試失敗,則為要執行的樣板作業。 值來自 D3DSTENCILOP 列舉類型。 預設值為 D3DSTENCILOP_KEEP。
-
D3DRS_CCW_STENCILPASS
-
如果 CCW 樣板和 z 測試都通過,要執行的樣板作業。 值來自 D3DSTENCILOP 列舉類型。 預設值為 D3DSTENCILOP_KEEP。
-
D3DRS_CCW_STENCILFUNC
-
比較函式。 如果 ( (ref & mask) 樣板函式 (樣板遮罩) ) 為TRUE,CCW 樣 & 板測試就會通過。 值來自 D3DCMPFUNC 列舉類型。 預設值為 D3DCMP_ALWAYS。
-
D3DRS_COLORWRITEENABLE1
-
裝置的其他 ColorWriteEnable 值。 請參閱D3DRS_COLORWRITEENABLE。 如果裝置的 D3DCAPS9 結構的 PrimitiveMiscCaps 成員中已設定D3DPMISCCAPS_INDEPENDENTWRITEMASKS功能位,即可使用此功能。 預設值為 0x0000000f。
-
D3DRS_COLORWRITEENABLE2
-
裝置的其他 ColorWriteEnable 值。 請參閱D3DRS_COLORWRITEENABLE。 如果裝置的 D3DCAPS9 結構的 PrimitiveMiscCaps 成員中已設定D3DPMISCCAPS_INDEPENDENTWRITEMASKS功能位,即可使用此功能。 預設值為 0x0000000f。
-
D3DRS_COLORWRITEENABLE3
-
裝置的其他 ColorWriteEnable 值。 請參閱D3DRS_COLORWRITEENABLE。 如果裝置的 D3DCAPS9 結構的 PrimitiveMiscCaps 成員中已設定D3DPMISCCAPS_INDEPENDENTWRITEMASKS功能位,即可使用此功能。 預設值為 0x0000000f。
-
D3DRS_BLENDFACTOR
-
在 Alpha 混合期間用於常數混合因數的D3DCOLOR。 如果在 D3DCAPS9 的 SrcBlendCaps 成員或 D3DCAPS9的 DestBlendCaps 成員中設定D3DPBLENDCAPS_BLENDFACTOR功能位,即可使用此功能。 請參閱 D3DRENDERSTATETYPE。 預設值為 0xffffffff。
-
D3DRS_SRGBWRITEENABLE
-
啟用轉譯目標寫入,以將 gamma 更正為 sRGB。 格式必須公開D3DUSAGE_SRGBWRITE。 預設值為 0。
-
D3DRS_DEPTHBIAS
-
用於比較深度值的浮點值。 請參閱 Direct3D 9 (深度偏差) 。 預設值為 0。
-
D3DRS_WRAP8
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP9
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP10
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP11
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP12
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP13
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP14
-
請參閱D3DRS_WRAP0。
-
D3DRS_WRAP15
-
請參閱D3DRS_WRAP0。
-
D3DRS_SEPARATEALPHABLENDENABLE
-
TRUE 會啟用 Alpha 色板的個別混合模式。 預設值為 FALSE。
當設定為 FALSE時,套用至 Alpha 的轉譯目標混合因數和作業會強制與針對色彩定義的混合因數和作業相同。 在未設定上限的實作上,此模式實際上會硬式連接到 FALSE D3DPMISCCAPS_SEPARATEALPHABLEND。 請參閱 D3DPMISCCAPS。
個別 Alpha 混合的類型取決於D3DRS_SRCBLENDALPHA和D3DRS_DESTBLENDALPHA轉譯狀態。
-
D3DRS_SRCBLENDALPHA
-
D3DBLEND列舉類型的一個成員。 除非D3DRS_SEPARATEALPHABLENDENABLE為 TRUE,否則會忽略此值。 預設值為 D3DBLEND_ONE。
-
D3DRS_DESTBLENDALPHA
-
D3DBLEND列舉類型的一個成員。 除非D3DRS_SEPARATEALPHABLENDENABLE為 TRUE,否則會忽略此值。 預設值為 D3DBLEND_ZERO。
-
D3DRS_BLENDOPALPHA
-
當轉譯狀態D3DRS_SEPARATEALPHABLENDENABLE設為 TRUE時,用來選取套用至個別 Alpha 混合的算數運算值。
有效值是由 D3DBLENDOP 列舉類型所定義。 預設值為 D3DBLENDOP_ADD。
如果不支援D3DPMISCCAPS_BLENDOP裝置功能,則會執行D3DBLENDOP_ADD。 請參閱 D3DPMISCCAPS。
-
D3DRS_FORCE_DWORD
-
強制此列舉的大小編譯為 32 位。 如果沒有這個值,某些編譯器會允許此列舉編譯成 32 位以外的大小。 不使用這個值。
備註
| 轉譯狀態 | 紋理取樣器 |
|---|---|
| ps_1_1至 ps_1_3 | 4 個紋理取樣器 |
Direct3D 會根據 (的紋理座標集以零起始的整數,將D3DRENDERSTATE_WRAPBIAS常數定義為方便應用程式啟用或停用紋理包裝,而不是明確使用其中一個D3DRS_WRAP n 狀態值) 。 將D3DRENDERSTATE_WRAPBIAS值新增至紋理座標集的以零起始的索引,以計算對應至該索引的 D3DRS_WRAP n 值,如下列範例所示。
// Enable U/V wrapping for textures that use the texture
// coordinate set at the index within the dwIndex variable
HRESULT hr = pd3dDevice->SetRenderState(
dwIndex + D3DRENDERSTATE_WRAPBIAS,
D3DWRAPCOORD_0 | D3DWRAPCOORD_1);
// If dwIndex is 3, the value that results from
// the addition equals D3DRS_WRAP3 (131)
規格需求
| 需求 | 值 |
|---|---|
| 標頭 |
|
另請參閱