使用 StateBlock 儲存頂點狀態 (Direct3D 9)
狀態欄塊只能用來擷取頂點狀態, (請參閱 狀態欄塊儲存和還原狀態 (Direct3D 9) ) 。 下列狀態為頂點狀態:
- 頂點轉譯狀態 (請參閱 頂點管線:轉譯狀態) 。
- 頂點取樣器狀態 (請參閱 頂點管線:取樣器狀態) 。
- 頂點紋理狀態 (請參閱 頂點管線:紋理狀態) 。
- IDirect3DDevice9::SetNPatchMode 中的 NPatch模式區段。
- 來自 IDirect3DDevice9::SetLight 的每個光線,以及是否使用IDirect3DDevice9::LightEnable啟用光線。
- 目前的頂點著色器和每個頂點著色器常數。
- 針對每個頂點資料流程,儲存 IDirect3DDevice9::SetStreamSourceFreq中的分隔符號值。
- 目前的頂點宣告。
若要使用狀態欄塊擷取頂點狀態,請在呼叫 IDirect3DDevice9::CreateStateBlock時指定D3DSBT_VERTEXSTATE。
頂點管線:轉譯狀態
裝置轉譯狀態會影響管線中幾乎所有部分的行為。 轉譯狀態是藉由呼叫 IDirect3DDevice9::SetRenderState來設定。
下表包含設定頂點狀態的所有轉譯狀態:
轉譯狀態 | 預設值 |
---|---|
D3DRS_CULLMODE | D3DCULL_CCW |
D3DRS_FOGCOLOR | 0 |
D3DRS_FOGTABLEMODE | D3DFOG_NONE |
D3DRS_FOGSTART | 0 |
D3DRS_FOGEND | 1 |
D3DRS_FOGDENSITY | 1 |
D3DRS_RANGEFOGENABLE | FALSE |
D3DRS_AMBIENT | 0 |
D3DRS_COLORVERTEX | TRUE |
D3DRS_FOGVERTEXMODE | D3DFOG_NONE |
D3DRS_CLIPPING | TRUE |
D3DRS_LIGHTING | TRUE |
D3DRS_LOCALVIEWER | TRUE |
D3DRS_EMISSIVEMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_AMBIENTMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_DIFFUSEMATERIALSOURCE | D3DMCS_COLOR1 |
D3DRS_SPECULARMATERIALSOURCE | D3DMCS_COLOR2 |
D3DRS_VERTEXBLEND | D3DVBF_DISABLE |
D3DRS_CLIPPLANEENABLE | 0 |
D3DRS_POINTSIZE | 驅動程式相依 |
D3DRS_POINTSIZE_MIN | 1 |
D3DRS_POINTSPRITEENABLE | FALSE |
D3DRS_POINTSCALEENABLE | FALSE |
D3DRS_POINTSCALE_A | 1 |
D3DRS_POINTSCALE_B | 0 |
D3DRS_POINTSCALE_C | 0 |
D3DRS_MULTISAMPLEANTIALIAS | TRUE |
D3DRS_MULTISAMPLEMASK | 0xffffffff |
D3DRS_PATCHEDGESTYLE | D3DPATCHEDGE_DISCRETE |
D3DRS_POINTSIZE_MAX | 1 |
D3DRS_INDEXEDVERTEXBLENDENABLE | FALSE |
D3DRS_TWEENFACTOR | 0 |
D3DRS_POSITIONDEGREE | D3DDEGREE_CUBIC |
D3DRS_NORMALDEGREE | D3DDEGREE_LINEAR |
D3DRS_MINTESSELLATIONLEVEL | 1 |
D3DRS_MAXTESSELLATIONLEVEL | 1 |
D3DRS_ADAPTIVETESS_X | 0 |
D3DRS_ADAPTIVETESS_Y | 0 |
D3DRS_ADAPTIVETESS_Z | 1 |
D3DRS_ADAPTIVETESS_W | 0 |
D3DRS_ENABLEADAPTIVETESSELLATION「/> | FALSE |
頂點管線:取樣器狀態
取樣器狀態可控制取樣相關主題,例如篩選、並排和紋理座標位址模式。 使用 IDirect3DDevice9::SetSamplerState 來設定取樣器狀態 (包括鑲嵌器單位中使用的取樣位移對應) 。 取樣器狀態已重新命名為 「D3DSAMP_」 前置詞,以在從 DirectX 8 移植時啟用編譯時間錯誤偵測。
下表包含設定頂點狀態的所有取樣器狀態:
取樣器狀態 | 預設值 |
---|---|
D3DSAMP_DMAPOFFSET | 256 |
頂點管線:紋理狀態
紋理狀態控制多紋理混合器的紋理混合作業。 使用 IDirect3DDevice9::SetTextureStageState 來設定紋理狀態。 使用 IDirect3DDevice9::SetTexture 將紋理與取樣器階段產生關聯。
下表包含設定頂點狀態的所有紋理狀態:
紋理狀態 | 預設值 |
---|---|
D3DTSS_TEXCOORDINDEX | 0 |
D3DTSS_TEXTURETRANSFORMFLAGS | D3DTTFF_DISABLE |
D3DTSS_TEXCOORDINDEX是固定函式頂點處理狀態。 如果使用可程式化的頂點著色器,則會忽略此狀態。
相關主題