Поделиться через


Сохранение состояний вершин с помощью StateBlock (Direct3D 9)

Блок состояний можно использовать для записи только состояния вершины (см. раздел Сохранение и восстановление состояния блоков состояний (Direct3D 9)). Следующее состояние является состоянием вершины:

Чтобы записать состояние вершины с помощью блока состояний, укажите D3DSBT_VERTEXSTATE при вызове IDirect3Device9::CreateStateBlock.

Конвейер вершин: состояние отрисовки

Состояния отрисовки устройства влияют на поведение почти каждой части конвейера. Состояния отрисовки задаются путем вызова 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 , чтобы настроить состояние выборки (включая то, которое используется в блоке tessellator для выборки карт смещения). Состояния выборки были переименованы с префиксом "D3DSAMP_", чтобы включить обнаружение ошибок во время компиляции при переносе из DirectX 8.

В следующей таблице приведены все состояния выборки, которые настраивают состояние вершины:

Состояния выборки Значение по умолчанию
D3DSAMP_DMAPOFFSET 256

 

Конвейер вершин: состояние текстуры

Состояния текстуры управляют операциями смешивания текстуры в блендере с несколькими текстурами. Используйте IDirect3DDevice9::SetTextureStageState для настройки состояний текстуры. Используйте IDirect3DDevice9::SetTexture , чтобы связать текстуру с этапом выборки.

В следующей таблице приведены все состояния текстуры, которые настраивают состояние вершины:

Состояния текстуры Значение по умолчанию
D3DTSS_TEXCOORDINDEX 0
D3DTSS_TEXTURETRANSFORMFLAGS D3DTTFF_DISABLE

 

D3DTSS_TEXCOORDINDEX — это состояние обработки вершин фиксированной функции. Если используется программируемый шейдер вершин, это состояние игнорируется.

Сохранение и восстановление состояния блоков состояний