본문 바로가기

예전/3D

[3D] SetSamplerState



텍스쳐는 스크린 좌표에서 삼각형에 입혀진다. 

텍스쳐와 폴리곤의 크기가 다른경우 축소 혹은 확대 되어 적용된다. 

이때 왜곡이 발생하는데 필터링을 통해 이러한 왜곡현상을 줄이기 위해 

SetSamplerState 함수를 사용한다.


HRESULT SetSamplerState(      

    DWORD Sampler,     D3DSAMPLERSTATETYPE Type,     DWORD Value );

Sampler
[in] 샘플러 스테이지 인덱스.
Type
[in] 이 파라미터에는,D3DSAMPLERSTATETYPE 열거형의 임의의 멤버를 지정할 수 있다.
Value
[in] 설정하는 스테이트값. 이 값의 의미는 Type 파라미터에 의해 정해진다.


성공했을 경우는,D3D_OK 를 돌려준다.

실패했을 경우는,D3DERR_INVALIDCALL 를 돌려준다.



이러한 방식으로 사용할 수 있다.



보통 D3DSAMP_MAGFILTER과 D3DSAMP_MINFILTER 인자를 사용한다.

D3DSAMP_MAGFILTER 는 D3DTEXTUREFILTERTYPE 형의 텍스쳐 스테이지 확대 필터이고,

D3DSAMP_MINFILTER  는 D3DTEXTUREFILTERTYPE 형의 텍스쳐 스테이지 축소 필터이다.

디폴트 값은 D3DTEXF_POINT 이다.


밉맵 레벨간의 사용하는 텍스쳐 필터를 설정하려면 D3DSAMP_MIPFILTER 로 설정한다.



    D3DTEXF_NONE            = 0,              // filtering disabled (valid for mip filter only)

    D3DTEXF_POINT           = 1,              // nearest

    D3DTEXF_LINEAR          = 2,             // linear interpolation

    D3DTEXF_ANISOTROPIC     = 3,        // anisotropic

    D3DTEXF_PYRAMIDALQUAD   = 6,    // 4-sample tent

    D3DTEXF_GAUSSIANQUAD    = 7,     // 4-sample gaussian

 



D3DTEXF_NONE

밉맵 처리를 무효로 한다. 래스터라이저는 대신에 확대 필터를 사용한다.


D3DTEXF_POINT

텍스처의 확대 필터 또는 축소 필터로서 사용되는 점필터링. 목적의 픽셀값에 가장 가까운 좌표를 가지는 텍셀을 사용한다. 밉맵 레벨간에 사용되는 텍스처 필터는, 최근점밉맵 필터이다. 래스터라이저는 가장 가까운 밉맵 텍스처의 텍셀로부터의 색을 사용한다.

D3DTEXF_LINEAR

텍스처의 확대 필터 또는 축소 필터로서 사용되는 바이리니아 보간 필터링. 목적의 픽셀을 둘러싸는 2 × 2 영역의 텍셀의 중량감 첨부 평균을 사용한다. 밉맵 레벨간에 사용되는 텍스처 필터는, 트라이 리니어 밉맵 보간이다. 래스터라이저는, 가장 가까운 밉맵 텍스처 2 점으로부터의 텍셀을 사용해, 픽셀색을 선형 보간 한다.


D3DTEXF_ANISOTROPIC

텍스처의 확대 필터 또는 축소 필터로서 사용되는 비등방성 텍스처 필터링. 텍스처 다각형과 스크린 평면간의 각도의 상위에 의해 일어나는 일그러짐을 보정한다.


D3DTEXF_PYRAMIDALQUAD

텍스처의 확대 필터 또는 축소 필터로서 사용하는 4 샘플의 텐트 필터.


D3DTEXF_GAUSSIANQUAD

텍스처의 확대 필터 또는 축소 필터로서 사용하는 4 샘플의 Gauss 필터.


D3DTEXF_FORCE_DWORD

이 열거형을 강제적으로 32 비트 사이즈에 컴파일 한다. 이 값은 사용되지 않았다.






[참고] http://egohim.blog.me/70002301471

http://telnet.or.kr/directx/graphics/reference/d3d/interfaces/idirect3ddevice9/setsamplerstate.htm




'예전 > 3D' 카테고리의 다른 글

[3D] 알파 블렌딩 (ALPHABLEND)  (0) 2013.01.07
[3D] 컬링 모드  (0) 2013.01.07
[3D] 절두체 컬링의 종류  (1) 2012.12.28
[3D] 지형에서  (0) 2012.12.28
[3D] 3D 물체 중심으로 카메라 회전 (RPG 카메라)  (0) 2012.12.23