ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • D3DPRESENT_PARAMETERS 구조체
    Programing/DirectX 2008. 5. 7. 12:04
    프레젠테이션 파라미터를 기술한다.

    구문
    typedef struct _D3DPRESENT_PARAMETERS_ {
        UINT BackBufferWidth, BackBufferHeight;
        D3DFORMAT BackBufferFormat;
        UINT BackBufferCount;
        D3DMULTISAMPLE_TYPE MultiSampleType;
        DWORD MultiSampleQuality;
        D3DSWAPEFFECT SwapEffect;
        HWND hDeviceWindow;
        BOOL Windowed;
        BOOL EnableAutoDepthStencil;
        D3DFORMAT AutoDepthStencilFormat;
        DWORD Flags;
        UINT FullScreen_RefreshRateInHz;
        UINT PresentationInterval;
    }

    구문은 위와 같고 총14정도의 인자를 받을수 있는 구조체이다.
    중요한 인자를 굳이 선택하라면 위의 빨간색 부분들

    1. BackBufferFormat
     - 백버퍼의 포맷, 다양한 포맷방법이 있으나 그 방법들은 D3DFORMAT를 참조하기로 한다.
     실제 기본 튜토리얼에는 포맷 방식으로 D3DFMT_UNKNOWN 을 지정하고 있다. 현재의 디스플레이 모드 포맷을 사용한다는 의미이다.

    2. SwapEffect
     -  D3DSWAPEFFECT열거형에는 다음과 같은 3가지 타입이 있고, 하나를 선택해서 사용할 수 있다.
     1) D3DSWAPEFFECT_DISCARD 
       : 오버헤드를 회피할 수가 있어 가장 효율적인 스왑 체인의 표현 방법을 디스플레이 드라이버측에서 선택할 수 있다. 또, 이것은,D3DPRESENT_PARAMETERS 의 MultiSampleType 멤버에 D3DMULTISAMPLE_NONE 이외의 값을 지정했을 때에 사용할 수 있는 유일한 스왑 이펙트이다

     2) D3DSWAPEFFECT_FLIP
     : 스왑 체인에는 복수의 백 버퍼가 포함되는 일이 있어, 프론트 버퍼를 포함한 순환 기다리는 행렬 (큐)로서 볼 수가 있다. 이 큐내에서는, 백 버퍼에는 항상 0 으로부터 (n - 1)의 순서에 번호가 붙는다. 여기서,n 는 백 버퍼의 수이다. 따라서, 0 은 마지막에 프레젠테이션 하고 나서 가장 긴 시간이 경과하고 있는 버퍼를 나타낸다. Present 가 불려 가면 큐가 "순환" 되어, 프론트 버퍼가 백 버퍼 (n - 1)가 되어, 백 버퍼 0 이 새로운 프론트 버퍼가 된다.
     
    3) D3DSWAPEFFECT_COPY
     : 이 스왑 이펙트는, 단일의 백 버퍼를 구성하는 스왑 체인 에 대해서만 지정할 수 있다. 윈도우 스왑 체인의 경우도 풀 스크린 스왑 체인의 경우도, 런타임은 복사 베이스의 Present 처리에 의한 의미들을 보증한다. 즉, 백 버퍼의 내용이 변경될 것은 없고, 플립 베이스의 Present 처리로 행해지도록(듯이) 프론트 버퍼의 내용으로 옮겨놓을 수 있을 것은 없다.

    3. Windowed
     -
    애플리케이션이 윈도우 모드로 동작하는 경우는 TRUE, 풀 스크린 모드로 동작하는 경우는 FALSE 이다.

    4. EnableAutoDepthStencil
     -
    이 값이 TRUE 의 경우, Microsoft® Direct3D® 는 애플리케이션에 대한 깊이 버퍼를 관리한다.
    생성되면 스텐실버퍼를 생성한다.(EnableAutoDepthStencil 가 TRUE 의 경우,AutoDepthStencilFormat 는 유효한 스텐실 포맷이 아니면 안된다. )

    5. AutoDepthStencilFormat
     -
    D3DFORMAT 열거형의 멤버. 장치가 생성 하는 자동 스텐실 표면의 포맷이다. EnableAutoDepthStencil 가 TRUE 가 아닌 경우, 이 멤버는 무시된다.


    위의 다섯인자들이 주로 사용되거나 중요한 인자들이다.
    다이렉트 SDK의 첫번째 튜토를 보면 아래와 같이 사용되어 짐을 알수 있다.


    D3DPRESENT_PARAMETERS d3dpp;
        ZeroMemory( &d3dpp, sizeof(d3dpp) );
        d3dpp.Windowed = TRUE;
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
        d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

    위의 d3dpp 다이렉트 디바이스를 만드는데 사용되어 진다.

Designed by Tistory.