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_ 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 | 미리 정의된 상태 그룹이 지정되지 않았습니다. |
[in/out] hStateSet
Operation 멤버에 지정된 작업에 의해 조작되는 상태 블록에 대한 핸들입니다.
작업이 D3DHAL_STATESETEXECUTE 설정되면 상태 블록 핸들이 사용자 모드 표시 드라이버의 StateSet 함수에 대한 호출로 전달됩니다.
StateSet 함수는 Operation이 D3DHAL_STATESETBEGIN 및 D3DHAL_STATESETCREATE 설정되면 상태 블록 핸들을 반환합니다.
설명
사용자 모드 표시 드라이버가 확장 렌더링 상태를 구현하는 경우(즉, Microsoft Direct3D 런타임이 제공하는 상태를 초과하는 렌더링 상태) 드라이버는 StateBlockType 멤버를 사용하여 사용 중인 미리 정의된 렌더링 상태 유형을 결정합니다. 이 정보에서 드라이버는 확장을 지원하기 위해 상태 블록을 적절하게 추가하는 방법을 결정할 수 있습니다.
StateBlockType 멤버는 D3DHAL_STATESETBEGIN, D3DHAL_STATESETEND 및 D3DHAL_STATECREATE 작업에만 유효합니다. D3DSTATEBLOCKTYPE 열거형 형식에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다. |
머리글 | d3dumddi.h(D3dumddi.h 포함) |