1. SetRenderState 사전적 의미
HRESULT SetRenderState(
D3DRENDERSTATETYPE state, //--1.
DWORD Value //--2.
);
Parameter
1. state [in] D3DRENDERSTATETYPE 목록중 임의의 멤버 지정
2. DWORD Value[in]
state에 의한 결정
반환값 성공시 D3D_OK를 반환
#define D3D_OK S_OK
#define S_OK ((HRESULT)0x00000000L)
2. 파라미터 D3DRENDERSTATETYPE
- D3DRS_ZENABLE
z버퍼를 유효하게 하려면 D3DZB_TRUE
w버퍼를 유효하게 하려면 D3DZB_USEW
깊이 버퍼링을 무효 하려면 D3DZB_FALSE
D3DPRESENT_PARAMETERS 구조체의 EnableAutoDepthStencil
맴버에 TRUE를 설정해 스텐실이 스왑 체인과 함께 생성 되고 있는 경우,
D3DRS_ZENABLE 의 default value는 D3DZB_TRUE,
D3DPRESENT_PARAMETERS 구조체의 EnableAutoDepthStencil
맴버에 FALSE를 설정해 스텐실이 생성되고 있지 않는 경우
D3DRS_ZENABLE의 default value는 D3DZB_FALSE
ex) g_pd3dDevice->SetRenderState( D3DR_ZENABLE, D3DZB_TRUE ); // -> z버퍼유효
- D3DRS_FILLMODE
D3DFILL_POINT : 점을 칠한다.
D3DFILL_WIREFRAME : WIREFRAME을 칠한다.
D3DFILL_SOLID : 면을 칠한다.
- D3DRS_SHADEMODE
D3DSHADE_FLAT : flat shading mode. 보간되지 않는 색이 삼각형 전체에 적용
D3DSHADE_GOURAUD : gouraud shading mode. 표면의 색성분과 스펙쿨러 성분은,
삼각형의 3개 정점간의 interpolation에 의해 결정
D3DSHADE_PHONG : pixel shading mode.
- D3DRS_ZWRITEENABLE
APP에 의한 깊이 버퍼에의 쓰기를 유효하게 하려면 TRUE -> default
시스템이 새로운 깊이 값으로 깊이 버퍼 갱신을 막을 수 있다. //--------------> 요지
- D3DRS_ALPHATESTENABLE
픽셀마다 알파 테스트를 유효하게 하려면 TRUE를 설정
테스트가
성공하면 픽셀이 frame buffer에 의해 처리된다.
실패하면 그 픽셀의 모든 frame buffer처리는 스킵된다.
D3DRS_ALPHAFUNC 렌더링 스테이트에서 제공되는 비교함수를 사용해,
들어오는 알파값을 기준 알파값과 비교해 테스트를 실시 한다.
기준 알파 값은, D3DRS_ALPHAREF 의 설정값으로 정해진다.
- D3DRS_ZFUNC
default value D3DCMP_LESSEQUAL.
픽셀의 깊이 값을 깊이 버퍼의 값과 비교 한다.
픽셀의 깊이 값이 비교함수로 허가되면 픽셀이 출력된다.
깊이 값이 깊이 버퍼에 출력되는 것은, RenderingState가 TRUE의 경우 뿐이다.
픽셀 렌더링 처리를 실시 하지 않는 경우에 텍스쳐를 필터 처리하거나 곱셈 할 필요가
없기 때문에 깊이 테스트에 실패하는 쪽이 소프트웨어에 의한
레스터화나 하드웨어 가속기시의 처리는 빨라진다.
- D3DRS_SRCBLEND
D3DBLEND_ZERO : (0,0,0,0)
D3DBLEND_ONE : (1,1,1,1)
D3DBLEND_SRCCOLOR : (R,G,B,A)
D3DBLEND_INVSRCCOLOR : (1-R,1-G,1-B,1-A)
D3DBLEND_SRCALPHA : (A,A,A,A)
D3DBLEND_INVSRCALPHA : (1-A,1-A,1-A,1-A)
D3DBLEND_DESTALPHA : (A,A,A,A)
D3DBLEND_INVDESTALPHA : (1-A,1-A,1-A,1-A)
D3DBLEND_DESTCOLOR : (R,G,B,A)
D3DBLEND_INVDESTCOLOR : (1-R,1-G,1-B,1-A)
D3DBLEND_SRCALPHASAT : (f,f,f,1), f = min(A, 1-A)
D3DBLEND_BOTHINVSRCALPHA
D3DRS_SRCBLEND rendering state 에 대해서만 지원 된다. //-------> 중요
source blend factor 는 (1-A,1-A,1-A,1-A)로,
destination blend factor는 (A,A,A,A) 다.
destination의 blend factor는 overriding 된다.
D3DBLEND_BLENDFACTOR
frame buffer 블렌더가 사용하는 정수 컬러 혼합 계수.
D3DPBLEND_BLENDFACTOR 가 on 인 경우에만 지원된다.
D3DBLEND_INVBLENDFACTOR //----------------------------------> 차후 이해요망
frame buffer 블렌더가 사용하는 정수 컬럽 혼합 계수의 보수.
D3DCAPS9 의 SrcBlendCaps 또는 DestBlendCaps 멤버에
D3DPBLEND_BLENDFACTOR 비트가 설정되어있는 경우만,
blend factor가 지원 된다.
- D3DRS_DESTBLEND
default value is D3DBLEND_ZERO.
D3DBLEND 목록의 맴버중 하나.
- D3DRS_ALPHAREF
알파 테스트가 유효하게 설정되어 있는 경우에,
픽셀 테스트를 하기 위한 기준 알파값을 지정 하는 값
- D3DRS_ALPHAFUNC
D3DCMPFUNC 목록 맴버중 하나.
default is D3DCMP_ALWAYS.
이 맴버는 애플리케이션에 알파 값을 기준으로 하는 ...
This member enables an application to accept or reject a pixel,
based on its alpha value. //--------------------------------> 차후 명확한 해석
- D3DRS_CULLMODE
Vertices를 Culling 하는 경우에 방법을 지정
default value is D3DCULL_CCW
D3DCULL_NONE / D3DCULL_CW / D3DCULL_CCW
- D3DRS_LASTPIXEL
default is TRUE
라인상의 마지막 점 그리기를 가능하게 한다.
- D3DRS_DITHERENABLE
디더 링 _ default is FALSE -> 일종의 색 혼합법
- D3DRS_ALPHABLENDENABLE
Alpha Blend(혼합) Type 은
D3DRS_SRCBLEND 와 D3DRS_DESTBLEND의 Rendering State에 의해 정해진다.
'프로그래밍 > 공부관련' 카테고리의 다른 글
깜박했었던, 양면그리기.. 스카이박스적용 및 항아리내부그리기 및 집안내부그리기등등.. (0) | 2009.07.15 |
---|---|
D3D에서 메시지박스가 가려졌을때 처리 (0) | 2009.07.04 |
MFC수업 텀프로젝트 파일저장 (0) | 2009.06.08 |
HWND 윈도우 핸들 (0) | 2009.03.13 |
HRESULT (0) | 2009.03.13 |