D3DRENDERSTATETYPE列舉
轉譯狀態會定義各種頂點和像素處理的設定狀態。 某些轉譯狀態會設定頂點處理,有些則設定圖元處理(請參閱 轉譯狀態 (Direct3D 9) 。 您可以使用 stateblock 來儲存和還原轉譯狀態(請參閱 狀態區塊儲存和還原狀態 (Direct3D 9) 。
語法
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-buffering,或D3DZB_FALSE停用深度緩衝。
如果深度樣板與交換鏈結一起建立,請將D3DPRESENT_PARAMETERS結構的 EnableAutoDepthStencil 成員設定為 TRUE,否則會D3DZB_FALSE此轉譯狀態的預設值D3DZB_TRUE。
-
D3DRS_FILLMODE
-
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 座標)。 在以範圍為基礎的霧中,所有霧方法都會如往常運作,不同之處在於它們會使用範圍,而不是計算中的深度。
Range 是用於霧運算的正確因素,但深度通常會改用,因為範圍對於計算和深度而言相當耗時,因此通常已可供使用。 使用深度來計算霧對周邊對象的霧度會隨著觀眾的眼睛移動而改變的不理想效果,在此情況下,深度變化和範圍會保持不變。
因為目前沒有硬體支援以每像素範圍為基礎的霧,因此範圍修正僅適用於頂點霧。
如需詳細資訊,請參閱頂點霧(Direct3D 9)。
-
D3DRS_STENCILENABLE
-
TRUE 表示啟用 stenciling 或 FALSE 來停用 stenciling。 預設值為 FALSE。 如需詳細資訊,請參閱樣板緩衝區技術(Direct3D 9)。
-
D3DRS_STENCILFAIL
-
樣板測試失敗時要執行的樣板作業。 值來自 D3DSTENCILOP 列舉型別。 預設值為 D3DSTENCILOP_KEEP。
-
D3DRS_STENCILZFAIL
-
樣板測試通過且深度測試失敗時要執行的樣板作業。 值來自 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
-
光源計算的 Emissive 色彩來源。 有效值是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_LINEAR(預設值)或D3DDEGREE_QUADRATIC。 如需詳細資訊,請參閱 D3DDEGREETYPE。
-
D3DRS_SCISSORTESTENABLE
-
TRUE 表示啟用剪刀測試,並 停用 FALSE 。 預設值為 FALSE。
-
D3DRS_SLOPESCALEDEPTHBIAS
-
用來判斷可套用多少偏差來共同平面基本類型,以減少 z-fighting。 預設值是 0。
bias = (max * D3DRS_SLOPESCALEDEPTHBIAS) + D3DRS_DEPTHBIAS。
其中 max 是呈現三角形的最大深度斜率。
-
D3DRS_ANTIALIASEDLINEENABLE
-
TRUE 表示啟用行反鋸齒, FALSE 表示停用行反鋸齒。 預設值為 FALSE。
當轉譯為多重取樣轉譯目標時,會忽略D3DRS_ANTIALIASEDLINEENABLE,而且所有行都會呈現別名。 在 多重取樣轉譯目標中使用ID3DXLine 進行反鋸齒線條轉譯。
-
D3DRS_MINTESSELLATIONLEVEL
-
最小鑲嵌層級。 預設值為 1.0f。 請參閱 鑲嵌式 (Direct3D 9) 。
-
D3DRS_MAXTESSELLATIONLEVEL
-
鑲嵌層級上限。 預設值為 1.0f。 請參閱 鑲嵌式 (Direct3D 9) 。
-
D3DRS_ADAPTIVETESS_X
-
以 x 方向調整為自適性鑲嵌。 預設值為 0.0f。 請參閱 調適型鑲嵌。
-
D3DRS_ADAPTIVETESS_Y
-
等於 Y 方向的自適性鑲嵌。 預設值為 0.0f。 請參閱 Adaptive_Tessellation。
-
D3DRS_ADAPTIVETESS_Z
-
在 z 方向的自適性鑲嵌數量。 預設值為 1.0f。 請參閱 Adaptive_Tessellation。
-
D3DRS_ADAPTIVETESS_W
-
在 w 方向的自適性鑲嵌數量。 預設值為 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-test 失敗,則為要執行的樣板作業。 值來自 D3DSTENCILOP 列舉型別。 預設值為 D3DSTENCILOP_KEEP。
-
D3DRS_CCW_STENCILPASS
-
如果 CCW 樣板和 z 測試都通過,則執行樣板作業。 值來自 D3DSTENCILOP 列舉型別。 預設值為 D3DSTENCILOP_KEEP。
-
D3DRS_CCW_STENCILFUNC
-
比較函式。 CCW 樣板測試通過(ref & mask) 樣板函式(樣板和遮罩)是否為 TRUE。 值來自 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
-
D3DCOLOR在Alpha混合期間用於常數混合因數。 如果在 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 的轉譯目標混合因數和作業會強制與針對色彩定義的相同。 在未設定上限D3DPMISCCAPS_SEPARATEALPHABLEND的實作上,此模式實際上會硬接線至 FALSE 。 請參閱 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)
需求
需求 | 值 |
---|---|
頁首 |
|
另請參閱