DirectX

DirectX 소개

대니스 2024. 7. 2. 14:40

DirectX 정의

DirectX는 윈도우 플랫폼에 대한 메인 게임 API(Application programming interface)이다.

 

DirectX 파트

DirectX Graphics

모든 2D와 3D 그래픽 그림을 다룬다

DirectInput

키보드, 마우스, 게임 패드 그리고 조이스틱과 같은 기기로부터 사용자의 입력을 다룬다

DriectInput은 또한 force-feedback에 대한 지원을 제공한다

XInput

Xinput을 사용하면 Xbox 360 컨트롤러와 쉽게 인터페이스할 수 있다

XAct3

사운드 이펙트와 배경 음악을 제공한다

XAct2

저수준의 오디오 기술을 제공한다

DirectSound

사운드 이펙트와 배경음에 대한 오래된 API이다

 

The Component Object Model (COM)

DirectX API는 COM(Component Object Model)을 기반으로 한다

COM은 아래와 같은 것들을 할 수 있는 API를 적을 수 있는 방법이다

- 기능에 쉽게 접근할 수 있다 : API DLL은 Windows의 시스템 레지스트리에 등록되며, 여기서 DLL의 클래스는 소프트웨어 응용 프로그램에서 쉽게 액세스할 수 있다

- 버전 다루기가 쉽다 : COM 클래스는 구체적인 인터페이스들을 실행한다. 그 인터페이스들은 새롭고 오래된 기능을 실행할 수 있다.

- 다수의 언어를 지원한다 : COM은 COM 클래스를 접근하고 사용할 수 있는 다른 프로그래밍 언어들을 허용하는 기술들을 제공한다. (i.e. marshalling)

- 그리고 많은 것들을 할 수 있다

 

The Component Object Model (COM) - The IUnknown interface

COM 클래스들은 IUnknown interface를 실행한다

IUnknown
{
	ULONG AddRef();
    HRESULT QueryInterface(REFIID riid, void **ppvObject);
    ULONG Release();
}

- AddRef는 오브젝트/인터페이스의 참조 카운트를 늘린다

- Release는 참조 카운트를 줄인다. 그 오브젝트는 참조 카운트가 0을 도달했을 때 삭제된다

- QueryInterface는 오브젝트의 구체적인 인터페이스의 접근으로 사용된다. riid 파라미터는 인터페이스를 인식한다. 

                    ppvObject 파라미터는 인터페이스를 검색하는데 사용되는 포인터-포인터이다.

 

The Component Object Model (COM) - The CoCreateInstance function

COM 오브젝트들은 전형적으로 CoCreateInstance() 함수를 호출함으로써 생성된다

HRESULT CoCreateInstance(
	REFCLSID rclsid,
	LPUNKNOWN pUnkOuter,
	DWORD dwClsContext,
	REFIID riid,
	LPVOID *ppv
)

- rclsid 파라미터는 클래스를 식별한다 (i.e. 클래스 식별자)

- pUnkOuter 파라미터는 특별한 사용을 위한 것이다. (가끔은 NULL)

- dwClsContext 파라미터는 특별한 사용을 위한 것이다. (가끔은 CLSCTX_INPROC_SERVER)

- riid 파라미터는 요구된 인터페이스를 식별하기 위한 것이다. (i.e. 인터페이스 식별자)

- ppv 파라미터는 되돌려진 인터페이스에 대한 포인터를 검색하는 pointer-pointer이다

 

Introducing Direct3D 11

- DirectX 11의 일부분인 Direct3D version 11 (D3D11)은 마이크로소프트 윈도우 7 운영체제와 함께 소개되었다

- D3D11은 D3D10이전과 비교하여 약간의 변화를 가지고 있다. 가장 중요한 변화는 쉐이더 아키텍처가 재설계되었다

- D3D10은 D3D9과 D3D8 이전과 비교하여 많은 주요한 변화들을 가지고 있다. 가장 중요한 변화는 접근에 기반한 새로운  셰이더의 장점인 고정된 함수 파이프라인의 제거이다.

- 비디오 카드 제조업체는 이전에는 D3D9 및 D3D10의 기능만 구현할 수 있었다. D3D11 및 D3D10을 사용하면 모든 비디오 카드 제조업체는 호환 가능한 것으로 간주되는 전체 기능 세트를 구현해야 한다

- D3D11과 D3D10은 오직 마이크로소프트 윈도우 Vista 그리고 나중에 나오는 운영체제에서만 가능하다

- 마이크로소프트 윈도우 XP그리고 윈도우 이전 버전은 오직 DirectX9만 지원한다

 

출처 : https://learn.microsoft.com/ko-kr/windows/win32/direct3d11/overviews-direct3d-11-graphics-pipeline