структура D3DHAL_DP2STATESET (d3dhal.h)

Структура D3DHAL_DP2STATESET используется для информирования драйвера о выполняемых операциях набора состояний.

Синтаксис

typedef struct _D3DHAL_DP2STATESET {
  DWORD             dwOperation;
  DWORD             dwParam;
  D3DSTATEBLOCKTYPE sbType;
} D3DHAL_DP2STATESET;

Члены

dwOperation

Задает подлежащую выполнению операцию. Значение этого элемента может быть одним из следующих:

Значение Значение
D3DHAL_STATESETBEGIN Задает начало набора состояний, на который ссылается dwParam.
D3DHAL_STATESETCAPTURE Указывает, что требуется выполнить запись. При указании этого флага драйвер должен записать snapshot текущего состояния, соответствующего блоку состояния, на который ссылается дескриптор, переданный в dwParam. То есть фиксируется только состояние, указанное в блоке состояний. Важные сведения об отслеживании состояния см. в разделе Ускоренное управление состоянием.
D3DHAL_STATESETCREATE Только DirectX 8.0 и более поздних версий.
После получения этого запроса драйвер должен создать блок состояния типа, заданного в поле sbType. Сведения, записываемые для каждого типа блока состояния, описаны ниже.
D3DHAL_STATESETDELETE Указывает, что набор состояний, на который ссылается dwParam, должен быть удален.
D3DHAL_STATESETEND Указывает конец набора состояний, на который ссылается dwParam.
D3DHAL_STATESETEXECUTE Указывает, что должен выполняться набор состояний, на который ссылается dwParam.

dwParam

Указывает дескриптор набора состояний, который ссылается на блок состояний, которыми управляет текущая dwOperation.

sbType

Указывает тип блока состояния. Драйвер должен игнорировать этот элемент, если он не реализует расширения состояния отрисовки или не реализует поддержку чистых устройств (только DirectX 8.0 и более поздних версий).

Если драйвер реализует расширенные состояния отрисовки, т. е. состояния отрисовки за пределами тех, которые предоставляет среда выполнения Direct3D, он может использовать sbType для определения используемых типов предопределенных состояний отрисовки. На основе этих сведений драйвер может определить, как соответствующим образом добавить блок состояния для поддержки его расширений.

Член sbType , допустимый только для D3DHAL_STATESETBEGIN, D3DHAL_STATESETEND и D3DHAL_STATECREATE, указывает тип блока состояния с одним из следующих D3DSTATEBLOCKTYPE перечисленных типов. Дополнительные сведения см. в документации по пакету SDK для DirectX.

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_EMISSIVEMATERIALSOURCE
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_EMISSIVEMATERIALSOURCE
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

NULL

Предопределенная группа состояний не указана.

Комментарии

Дополнительные сведения об использовании этой структуры в управлении блоками состояний см. в статье Ускоренное управление состоянием в руководстве по проектированию графики.

Требования

Требование Значение
Заголовок d3dhal.h (включая D3dhal.h)