그래픽스/DX 기록

DXGI (DirectX Graphics Infrastructure)

우대비 2022. 12. 12. 18:10
반응형

DXGI (DirectX Graphics Infrastructure)는

여러 그래픽 API들에 공통인 그래픽 관력 작업들이 존재한다는 데서 착안되어 만들어졌음

 

예를 들어 매끄러운 2차원 애니메이션을 표현하기 위해서는 2차원 렌더링API도 

3차원 렌더링 API처럼 교환 사슬과 페이지 전환이 필요하다는것

이 때문에 교환 사슬을 대표하는 인터페이스인 IDXGISwapChain은 실제로 DXGI API의 일부임 (Direct3D가 아니라)

 

이 외에도 젠체화면 모드 전환, 디스플레이 어댑터나 모니터,

지원되는 디스플레이 모드(해상도, 갱신율 등) 같은

그래픽 시스템 정보의 열거 등의 기능은 DXGI가 제공한다.

또한 지원되는 표현 형식들도 DXGI에 정의되어 있음(DXGI_FORMAT)


DXGI의 핵심 인터페이스 중 하나로 IDXGIFactory가 있음

이 인터페이스틑 IDXGISwapChain 인터페이스 생성과 디스플레이 어댑터 열거에 쓰임

 

디스플레이 어댑터는 물리적인 하드웨어 장치(그래픽카드) 이다.

디스플레이 어댑터를 대표하는 인터페이스는 IDXGIAdapter이다

 

다음코드는 시스템에 있는 모든 어댑터를 열거하는 방법을 보여준다.

void D3DApp::LogAdapters()
{
    UINT i = 0;
    IDXGIAdapter* adapter = nullptr;
    std::vector<IDXGIAdapter*> adapterList;

    while(mdxgiFactory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND)
    {
        DXGI_ADAPTER_DESC desc;
        adapter->GETDesc(&desc);

        std::wstring text = L"***Adapter:";
        text += desc.Description;
        text+= L"\n";

        OutputDebugString(text.c_str());

        adapterList.push_back(adapter);

        ++i;
    }

    for(size_t = 0; i < adapterList.size(); ++i)
    }
        LogAdapterOutputs(adapterList[i]);
        ReleaseCom(adapterList[i];
    }

}

위의 메서드의 출력 예이다.

***Adapter: NVIDIA GeForce RTX 3070

***Adapter: Microsoft Basic Render Driver

 

 

반응형
LIST

'그래픽스 > DX 기록' 카테고리의 다른 글

Cylinder  (0) 2023.08.15
Light (BlinnPhong)  (0) 2023.08.15
텍스쳐링  (0) 2023.08.14
교환 사슬과 페이지 전환  (0) 2022.12.08
COM (Component Obejct Model)  (0) 2022.12.07