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 을 사용하여 미리 정의된 렌더링 상태 유형을 확인할 수 있습니다. 이 정보에서 드라이버는 해당 확장을 지원하기 위해 상태 블록을 적절하게 추가하는 방법을 결정할 수 있습니다.

D3DHAL_STATESETBEGIN, D3DHAL_STATESETEND 및 D3DHAL_STATECREATE 경우에만 유효한 sbType 멤버는 다음 D3DSTATEBLOCKTYPE 열거형 형식 중 하나를 사용하여 상태 블록 형식을 지정합니다. 자세한 내용은 DirectX SDK 설명서를 참조하세요.

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 포함)