структура D3DDDIARG_STATESET (d3dumddi.h)
Структура D3DDDIARG_STATESET описывает, как задать блок состояния.
Синтаксис
typedef struct _D3DDDIARG_STATESET {
[in] UINT Operation;
[in] D3DSTATEBLOCKTYPE StateBlockType;
[in/out] HANDLE hStateSet;
} D3DDDIARG_STATESET;
Члены
[in] Operation
Операция выполнения, которая может быть одним из следующих значений.
значение | значение |
---|---|
D3DHAL_STATESETBEGIN | Запустите блок состояния, на который ссылается дескриптор в элементе hStateSet. |
D3DHAL_STATESETCAPTURE | Выполнение записи. При указании этого флага драйвер должен записать моментальный снимок текущего состояния, соответствующего блоку состояния, на который ссылается дескриптор в hStateSet. То есть фиксируется только состояние, указанное в блоке состояния. |
D3DHAL_STATESETCREATE | Создайте блок состояния типа, указанного в элементе StateBlockType. Сведения для записи для каждого типа блока состояния описаны в StateBlockType. |
D3DHAL_STATESETDELETE | Удалите блок состояния, на который ссылается дескриптор в hStateSet. |
D3DHAL_STATESETEND | Завершите блок состояния, на который ссылается дескриптор в hStateSet. |
D3DHAL_STATESETEXECUTE | Запустите блок состояния, на который ссылается дескриптор в hStateSet. |
[in] StateBlockType
Значение типа D3DSTATEBLOCKTYPE, указывающее тип состояния, которое должен записывать драйвер. Этот элемент может быть одним из следующих значений.
значение | значение |
---|---|
D3DSBT_ALL | Драйвер должен записать все состояние. При запросе на запись всего состояния в чистом режиме устройства драйвер должен записывать все состояние за исключением текущего состояния вершинного потока, текущего состояния потока индекса и текущих реализованных текстур. Драйвер должен захватывать (то есть записывать) окно просмотра, все мировые преобразования, преобразование представления, преобразование проекции, преобразование текстуры для всех этапов текстуры, все плоскости пользовательского клипа, текущий материал, все огни, используемые до создания блока состояния, текущий дескриптор вершин-шейдер, текущий дескриптор пикселя-шейдер, текущие константы вершин-шейдеров, и текущие константы шейдера пикселей. Кроме того, драйвер должен записывать следующие состояния отрисовки и текстуры: D3DRENDERSTATE_SPECULARENABLE D3DRENDERSTATE_ZENABLE D3DRENDERSTATE_FILLMODE D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_LINEPATTERN D3DRENDERSTATE_ZWRITEENABLE D3DRENDERSTATE_ALPHATESTENABLE D3DRENDERSTATE_LASTPIXEL D3DRENDERSTATE_SRCBLEND D3DRENDERSTATE_DESTBLEND D3DRENDERSTATE_CULLMODE D3DRENDERSTATE_ZFUNC D3DRENDERSTATE_ALPHAREF D3DRENDERSTATE_ALPHAFUNC D3DRENDERSTATE_DITHERENABLE D3DRENDERSTATE_FOGENABLE D3DRENDERSTATE_STIPPLEDALPHA D3DRENDERSTATE_FOGCOLOR D3DRENDERSTATE_FOGTABLEMODE D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_EDGEANTIALIAS D3DRENDERSTATE_ALPHABLENDENABLE D3DRENDERSTATE_ZBIAS D3DRENDERSTATE_RANGEFOGENABLE D3DRENDERSTATE_STENCILENABLE D3DRENDERSTATE_STENCILFAIL D3DRENDERSTATE_STENCILZFAIL D3DRENDERSTATE_STENCILPASS D3DRENDERSTATE_STENCILFUNC D3DRENDERSTATE_STENCILREF D3DRENDERSTATE_STENCILMASK D3DRENDERSTATE_STENCILWRITEMASK D3DRENDERSTATE_TEXTUREFACTOR D3DRENDERSTATE_WRAP0 D3DRENDERSTATE_WRAP1 D3DRENDERSTATE_WRAP2 D3DRENDERSTATE_WRAP3 D3DRENDERSTATE_WRAP4 D3DRENDERSTATE_WRAP5 D3DRENDERSTATE_WRAP6 D3DRENDERSTATE_WRAP7 D3DRENDERSTATE_AMBIENT D3DRENDERSTATE_COLORVERTEX D3DRENDERSTATE_FOGVERTEXMODE D3DRENDERSTATE_CLIPPING D3DRENDERSTATE_LIGHTING D3DRENDERSTATE_NORMALIZENORMALS D3DRENDERSTATE_LOCALVIEWER D3DRENDERSTATE_ EMISSIVESOURCE D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRENDERSTATE_VERTEXBLEND D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_SOFTWAREVERTEXPROCESSING D3DRS_POINTSIZE D3DRS_POINTSIZE_MIN D3DRS_POINTSPRITEENABLE D3DRS_POINTSCALEENABLE D3DRS_POINTSCALE_A D3DRS_POINTSCALE_B D3DRS_POINTSCALE_C D3DRS_MULTISAMPLEANTIALIAS D3DRS_MULTISAMPLEMASK D3DRS_PATCHEDGESTYLE D3DRS_PATCHSEGMENTS D3DRS_ POINTSIZE_MAX D3DRS_INDEXEDVERTEXBLENDENABLE D3DRS_COLORWRITEENABLE D3DRS_TWEENFACTOR D3DRS_BLENDOP Драйвер должен записать следующие состояния стадии текстуры: D3DTSS_COLOROP D3DTSS_COLORARG1 D3DTSS_COLORARG2 D3DTSS_ALPHAOP D3DTSS_ALPHAARG1 D3DTSS_ALPHAARG2 D3DTSS_BUMPENVMAT00 D3DTSS_BUMPENVMAT01 D3DTSS_BUMPENVMAT10 D3DTSS_BUMPENVMAT11 D3DTSS_TEXCOORDINDEX D3DTSS_ADDRESSU D3DTSS_ADDRESSV D3DTSS_BORDERCOLOR D3DTSS_MAGFILTER D3DTSS_MINFILTER D3DTSS_MIPFILTER D3DTSS_MIPMAPLODBIAS D3DTSS_MAXMIPLEVEL D3DTSS_MAXANISOTROPY D3DTSS_BUMPENVLSCALE D3DTSS_BUMPENVLOFFSET D3DTSS_TEXTURETRANSFORMFLAGS D3DTSS_ADDRESSW D3DTSS_COLORARG0 D3DTSS_ ALPHAARG0 D3DTSS_RESULTARG |
D3DSBT_PIXELSTATE | Драйвер должен записывать только состояние пикселя. При захвате состояния пикселя в чистом режиме устройства драйвер должен записывать (то есть записывать) текущий дескриптор шейдера пикселей, константы текущего шейдера пикселей и следующие состояния отрисовки, связанные с обработкой пикселей и состояния стадии текстуры: D3DRENDERSTATE_ZENABLE D3DRENDERSTATE_FILLMODE D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_LINEPATTERN D3DRENDERSTATE_ZWRITEENABLE D3DRENDERSTATE_ALPHATESTENABLE D3DRENDERSTATE_LASTPIXEL D3DRENDERSTATE_SRCBLEND D3DRENDERSTATE_DESTBLEND D3DRENDERSTATE_ZFUNC D3DRENDERSTATE_ALPHAREF D3DRENDERSTATE_ALPHAFUNC D3DRENDERSTATE_DITHERENABLE D3DRENDERSTATE_STIPPLEDALPHA D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_EDGEANTIALIAS D3DRENDERSTATE_ALPHABLENDENABLE D3DRENDERSTATE_ZBIAS D3DRENDERSTATE_STENCILENABLE D3DRENDERSTATE_STENCILFAIL D3DRENDERSTATE_STENCILZFAIL D3DRENDERSTATE_STENCILPASS D3DRENDERSTATE_STENCILFUNC D3DRENDERSTATE_STENCILREF D3DRENDERSTATE_STENCILMASK D3DRENDERSTATE_STENCILWRITEMASK D3DRENDERSTATE_TEXTUREFACTOR D3DRENDERSTATE_WRAP0 D3DRENDERSTATE_WRAP1 D3DRENDERSTATE_WRAP2 D3DRENDERSTATE_WRAP3 D3DRENDERSTATE_WRAP4 D3DRENDERSTATE_WRAP5 D3DRENDERSTATE_WRAP6 D3DRENDERSTATE_ WRAP7 D3DRS_COLORWRITEENABLE D3DRS_BLENDOP D3DTSS_COLOROP D3DTSS_COLORARG1 D3DTSS_COLORARG2 D3DTSS_ALPHAOP D3DTSS_ALPHAARG1 D3DTSS_ALPHAARG2 D3DTSS_BUMPENVMAT00 D3DTSS_BUMPENVMAT01 D3DTSS_BUMPENVMAT10 D3DTSS_BUMPENVMAT11 D3DTSS_TEXCOORDINDEX D3DTSS_ADDRESSU D3DTSS_ADDRESSV D3DTSS_BORDERCOLOR D3DTSS_MAGFILTER D3DTSS_MINFILTER D3DTSS_MIPFILTER D3DTSS_MIPMAPLODBIAS D3DTSS_MAXMIPLEVEL D3DTSS_MAXANISOTROPY D3DTSS_BUMPENVLSCALE D3DTSS_BUMPENVLOFFSET D3DTSS_ TEXTURETRANSFORMFLAGS D3DTSS_ADDRESSW D3DTSS_COLORARG0 D3DTSS_ALPHAARG0 D3DTSS_RESULTARG |
D3DSBT_VERTEXSTATE | Драйвер должен записывать только состояние вершины. При захвате состояния вершины в чистом режиме устройства драйвер должен записывать (записывать) все фонари, которые использовались до создания блока состояния, текущий дескриптор вершин, константы текущего шейдера вершин и следующие состояния обработки вершин, связанных с отрисовкой и стадии текстуры: D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_SPECULARENABLE D3DRENDERSTATE_CULLMODE D3DRENDERSTATE_FOGENABLE D3DRENDERSTATE_FOGCOLOR D3DRENDERSTATE_FOGTABLEMODE D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_RANGEFOGENABLE D3DRENDERSTATE_AMBIENT D3DRENDERSTATE_COLORVERTEX D3DRENDERSTATE_FOGVERTEXMODE D3DRENDERSTATE_CLIPPING D3DRENDERSTATE_LIGHTING D3DRENDERSTATE_NORMALIZENORMALS D3DRENDERSTATE_LOCALVIEWER D3DRENDERSTATE_ EMISSIVESOURCE D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRENDERSTATE_VERTEXBLEND D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_SOFTWAREVERTEXPROCESSING D3DRS_POINTSIZE D3DRS_POINTSIZE_MIN D3DRS_POINTSPRITEENABLE D3DRS_POINTSCALEENABLE D3DRS_POINTSCALE_A D3DRS_POINTSCALE_B D3DRS_POINTSCALE_C D3DRS_MULTISAMPLEANTIALIAS D3DRS_MULTISAMPLEMASK D3DRS_PATCHEDGESTYLE D3DRS_PATCHSEGMENTS D3DRS_ POINTSIZE_MAX D3DRS_INDEXEDVERTEXBLENDENABLE D3DRS_TWEENFACTOR D3DTSS_TEXCOORDINDEX D3DTSS_TEXTURETRANSFORMFLAGS |
НЕДЕЙСТВИТЕЛЬНЫЙ | Предопределенная группа состояний не указана. |
[in/out] hStateSet
Дескриптор блока состояния, который управляется операцией, указанной в элементе операции.
Дескриптор блока состояния передается при вызове функции драйвера StateSet пользовательского режима, если операции задано значение D3DHAL_STATESETEXECUTE.
Функция StateSet возвращает дескриптор блока состояния, если операции задано значение D3DHAL_STATESETBEGIN и D3DHAL_STATESETCREATE.
Замечания
Если драйвер отображения в пользовательском режиме реализует расширенные состояния отрисовки (то есть состояния отрисовки за пределами тех, которые предоставляет среда выполнения Microsoft Direct3D), драйвер использует элемент StateBlockType для определения типа предопределенного состояния отрисовки, используемого. Из этих сведений драйвер может определить, как добавить блок состояния соответствующим образом для поддержки расширений.
Элемент StateBlockType действителен только для операций D3DHAL_STATESETBEGIN, D3DHAL_STATESETEND и D3DHAL_STATECREATE. Дополнительные сведения о типе перечисления D3DSTATEBLOCKTYPE см. в документации по пакету SDK для Microsoft Windows.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
заголовка | d3dumddi.h (include D3dumddi.h) |