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


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

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

Синтаксис

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

Члены

dwOperation

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

значение значение
D3DHAL_STATESETBEGIN Указывает начало набора состояний, на который ссылается dwParam.
D3DHAL_STATESETCAPTURE Указывает, что необходимо выполнить запись. Если этот флаг указан, драйвер должен записать моментальный снимок текущего состояния, соответствующего блоку состояния, на который ссылается дескриптор, переданный в 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 (include D3dhal.h)