StateBlock을 사용하여 픽셀 상태 저장(Direct3D 9)
상태 블록을 사용하여 픽셀 상태만 캡처할 수 있습니다( 상태 블록 저장 및 복원 상태 참조(Direct3D 9)). 다음 상태는 픽셀 상태입니다.
- 픽셀 렌더링 상태( 픽셀 파이프라인: 렌더링 상태 참조).
- 픽셀 텍스처 상태( 픽셀 파이프라인: 텍스처 상태 참조).
- 픽셀 샘플러 상태( 픽셀 파이프라인: 샘플러 상태 참조).
- 현재 픽셀 셰이더 및 각 픽셀 셰이더 상수입니다.
상태 블록을 사용하여 픽셀 상태를 캡처하려면 IDirect3DDevice9::CreateStateBlock을 호출할 때 D3DSBT_PIXELSTATE 지정합니다.
픽셀 파이프라인: 렌더링 상태
디바이스 렌더링 상태는 파이프라인의 거의 모든 부분의 동작에 영향을 줍니다. 렌더링 상태는 IDirect3DDevice9::SetRenderState를 호출하여 설정됩니다.
다음 표에는 픽셀 상태를 설정하는 모든 렌더링 상태가 포함되어 있습니다.
렌더링 상태 | 기본값 |
---|---|
D3DRS_ZENABLE | D3DZB_FALSE |
D3DRS_SPECULARENABLE | FALSE |
D3DFILLMODE | D3DFILL_SOLID |
D3DSHADEMODE | D3DSHADE_GOURAUD |
D3DRS_ZWRITEENABLE | TRUE |
D3DRS_ALPHATESTENABLE | FALSE |
D3DRS_LASTPIXEL | TRUE |
D3DRS_SRCBLEND | D3DBLEND_ONE |
D3DRS_DESTBLEND | D3DBLEND_ZERO |
D3DRS_ZFUNC | D3DCMP_LESSEQUAL |
D3DRS_ALPHAREF | 0 |
D3DRS_ALPHAFUNC | D3DCMP_ALWAYS |
D3DRS_DITHERENABLE | FALSE |
D3DRS_FOGSTART | 0 |
D3DRS_FOGEND | 1 |
D3DRS_FOGDENSITY | 1 |
D3DRS_ALPHABLENDENABLE | FALSE |
D3DRS_DEPTHBIAS | 0 |
D3DRS_STENCILENABLE | FALSE |
D3DRS_STENCILFAIL | D3DSTENCILOP_KEEP |
D3DRS_STENCILZFAIL | D3DSTENCILOP_KEEP |
D3DRS_STENCILPASS | D3DSTENCILOP_KEEP |
D3DRS_STENCILFUNC | D3DCMP_ALWAYS |
D3DRS_STENCILREF | 0 |
D3DRS_STENCILMASK | 0xffffffff |
D3DRS_STENCILWRITEMASK | 0xffffffff |
D3DRS_TEXTUREFACTOR | 0xffffffff |
D3DRS_WRAP0 | 0 |
D3DRS_WRAP1 | 0 |
D3DRS_WRAP2 | 0 |
D3DRS_WRAP3 | 0 |
D3DRS_WRAP4 | 0 |
D3DRS_WRAP5 | 0 |
D3DRS_WRAP6 | 0 |
D3DRS_WRAP7 | 0 |
D3DRS_WRAP8 | 0 |
D3DRS_WRAP9 | 0 |
D3DRS_WRAP10 | 0 |
D3DRS_WRAP11 | 0 |
D3DRS_WRAP12 | 0 |
D3DRS_WRAP13 | 0 |
D3DRS_WRAP14 | 0 |
D3DRS_WRAP15 | 0 |
D3DRS_LOCALVIEWER | TRUE |
D3DRS_EMISSIVEMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_AMBIENTMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_DIFFUSEMATERIALSOURCE | D3DMCS_COLOR1 |
D3DRS_SPECULARMATERIALSOURCE | D3DMCS_COLOR2 |
D3DRS_COLORWRITEENABLE | 0x0000000f |
D3DBLENDOP | D3DBLENDOP_ADD |
D3DRS_SCISSORTESTENABLE | FALSE |
D3DRS_SLOPESCALEDEPTHBIAS | 0 |
D3DRS_ANTIALIASEDLINEENABLE | FALSE |
D3DRS_TWOSIDEDSTENCILMODE | FALSE |
D3DRS_CCW_STENCILFAIL | D3DSTENCILOP_KEEP |
D3DRS_CCW_STENCILZFAIL | D3DSTENCILOP_KEEP |
D3DRS_CCW_STENCILPASS | D3DSTENCILOP_KEEP |
D3DRS_CCW_STENCILFUNC | D3DCMP_ALWAYS |
D3DRS_COLORWRITEENABLE1 | 0x0000000f |
D3DRS_COLORWRITEENABLE2 | 0x0000000f |
D3DRS_COLORWRITEENABLE3 | 0x0000000f |
D3DRS_BLENDFACTOR | 0xffffffff |
D3DRS_SRGBWRITEENABLE | 0 |
D3DRS_SEPARATEALPHABLENDENABLE | FALSE |
D3DRS_SRCBLENDALPHA | D3DBLEND_ONE |
D3DRS_DESTBLENDALPHA | D3DBLEND_ZERO |
D3DRS_BLENDOPALPHA | D3DBLENDOP_ADD |
픽셀 파이프라인: 샘플러 상태
샘플러 상태는 필터링, 타일링 및 텍스처 좌표 주소 모드와 같은 샘플링 관련 topics 제어합니다. IDirect3DDevice9::SetSamplerState를 사용하여 샘플러 상태를 설정합니다(테셀레이터 단위에서 샘플 변위 맵에 사용되는 상태 포함). 샘플러 상태는 DirectX 8에서 포팅할 때 컴파일 시간 오류 검색을 사용하도록 "D3DSAMP_" 접두사로 이름이 바뀌었습니다.
다음 표에는 픽셀 상태를 설정하는 모든 샘플러 상태가 포함되어 있습니다.
샘플러 상태 | 기본값 |
---|---|
D3DSAMP_ADDRESSU | D3DTADDRESS_WRAP |
D3DSAMP_ADDRESSV | D3DTADDRESS_WRAP |
D3DSAMP_ADDRESSW | D3DTADDRESS_WRAP |
D3DSAMP_BORDERCOLOR | 0x00000000 |
D3DSAMP_MAGFILTER | D3DTEXF_POINT |
D3DSAMP_MINFILTER | D3DTEXF_POINT |
D3DSAMP_MIPFILTER | D3DTEXF_NONE |
D3DSAMP_MIPMAPLODBIAS | 0 |
D3DSAMP_MAXMIPLEVEL | 0 |
D3DSAMP_MAXANISOTROPY | 1 |
D3DSAMP_SRGBTEXTURE | 0 |
D3DSAMP_ELEMENTINDEX | 0 |
픽셀 파이프라인: 텍스처 상태
텍스처 상태는 다중 텍스처 블렌더의 텍스처 혼합 작업을 제어합니다. IDirect3DDevice9::SetTextureStageState를 사용하여 텍스처 스테이지 상태를 설정합니다. IDirect3DDevice9::SetTexture를 사용하여 텍스처를 샘플러 단계와 연결합니다.
다음 표에는 픽셀 상태를 설정하는 모든 텍스처 상태가 포함되어 있습니다.
텍스처 상태 | 기본값 |
---|---|
D3DTSS_COLOROP | D3DTOP_DISABLE |
D3DTSS_COLORARG1 | D3DTA_TEXTURE |
D3DTSS_COLORARG2 | D3DTA_CURRENT |
D3DTSS_ALPHAOP | D3DTOP_DISABLE |
D3DTSS_ALPHAARG1 | D3DTA_TEXTURE |
D3DTSS_ALPHAARG2 | D3DTA_CURRENT |
D3DTSS_BUMPENVMAT00 | 0 |
D3DTSS_BUMPENVMAT01 | 0 |
D3DTSS_BUMPENVMAT10 | 0 |
D3DTSS_BUMPENVMAT11 | 0 |
D3DTSS_TEXCOORDINDEX | 0 |
D3DTSS_BUMPENVLSCALE | 0 |
D3DTSS_BUMPENVLOFFSET | 0 |
D3DTSS_TEXTURETRANSFORMFLAGS | D3DTTFF_DISABLE |
D3DTSS_COLORARG0 | D3DTA_CURRENT |
D3DTSS_ALPHAARG0 | D3DTA_CURRENT |
D3DTSS_RESULTARG | D3DTA_CURRENT |
관련 항목