Сохранение состояний вершин с помощью StateBlock (Direct3D 9)
Блок состояний можно использовать для записи только состояния вершины (см. раздел Сохранение и восстановление состояния блоков состояний (Direct3D 9)). Следующее состояние является состоянием вершины:
- Состояние отрисовки вершины (см . раздел Вершинный конвейер: состояние отрисовки).
- Состояние выборки вершин (см. раздел Вершинный конвейер: состояние выборки).
- Состояние текстуры вершины (см . раздел Вершинный конвейер: состояние текстуры).
- Режим NPatch сегментирует из IDirect3DDevice9::SetNPatchMode.
- Каждый свет из IDirect3DDevice9::SetLight, а также включен ли свет с IDirect3DDevice9::LightEnable.
- Текущий вершинный шейдер и каждая константа вершинного шейдера.
- Для каждого потока вершин сохраните значение разделителя из IDirect3DDevice9::SetStreamSourceFreq.
- Текущее объявление вершины.
Чтобы записать состояние вершины с помощью блока состояний, укажите 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 — это состояние обработки вершин фиксированной функции. Если используется программируемый шейдер вершин, это состояние игнорируется.
Связанные темы