ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 용책 다이렉트 초기화 정리
    Programing/DirectX 2008. 5. 9. 11:51


    1. Direct3D 개요

    - 3D세계를 표현 할 수 있도록 해주는 저수준 그래픽 API이다.

    - 애플리케이션과 그래픽 장치를 연결하는 중개자

    - Direct3D가 공개하고 있는 기능이라고 해도 하드웨어에서 반드시 지원하리라는 보장은 없다.

    - 장치에서 지원하지 않을 경우 REF 장치를 사용한다.

    - D3DDEVTYPE_HAL, D3DDEVTYPE_REF

     

    2. COM

    - 컴포넌트 객체 모델(COM) - 인터페이스

    - 다이렉트 언어를 독립적으로 만들어주고 하위 호환성을 갖출 수 있게 하는 기술

    - 다른 COM 인터페이스의 메서드나 특수한 함수를 통해 COM인터페이스의 포인터를 얻는다.

    - 작업이 모두 끝나면 인터페이스의 Release 메서드를 호출해야 한다.

    - COM 인터페이스는 접두어로 대문자 I를 가진다. 예) IDirect3DDevice9

     

    3. 약간의 준비

    1) 표면(surface)

    - Direct3D가 주로 2D 이미지 데이터를 보관하는데 이용하는 픽셀의 행렬이다.

    - 너비와 높이는 픽셀 단위로 계산, 피치는 바이트 계산, 피치와 너비는 반드시 같지는 않다.

    - IDirect3DSurface9 인터페이스 사용

     

    2) 멀티샘플링

    - D3DMULTISAMPLE_TYPE 열거형 사용, NONE ~ 16까지의 멀티 샘플링 레벨지정

     

    3) 픽셀 포맷

    - 표면이나 텍스처를 만들기 위하여 픽셀 포맷을 지정해야 한다.

    - D3DFORMAT 열거형

    4) 메모리 풀

    - 리소스의 버퍼를 보관 유지하는 메모리 클래스를 정의한다.

    - D3DPOOL 열거형의 멤버로 지정

     

    5) 스왑체인과 페이지 플리핑

    - Direct3D는 보통 두 세개의 표면을 하나의 컬렉션으로 관리한다(스왑체인)

    - 스왑 체인과 페이지 플리핑 기술은 프레임간의 부드러운 애니메이션을 제공한다.

    - 대부분의 작업은 Direct3D가 직접 관리하므로 우리가 이 인터페이스를 이용하는 경우가 거의 없다.

    - 후면 버퍼를 렌더링하고 후면버퍼를 시연하고 다시 돌아간다.

     

    6) 깊이 버퍼

    - 일부물체는 다른 물체에 가려 보이지 않는다.(깊이버퍼, z-버퍼)

    - 대부분의 애플리케이션에서는 24비트 깊이 버퍼로도 충분하다.

     

    7) 버텍스 프로세싱

    - 소프트웨어나 하드웨어 두가지 방법으로 처리 할 수 있다.

     

    8) 장치 특성

    - D3DCAPS :: DevCaps

     

    4. Direct3D 초기화하기

    1) IDirect3D9 인터페이스로의 포인터를 얻는다. 이 인터페이스는 시스템의 물리적 하드웨어 장치에 대한 정보를 얻고 3D 그래픽을 디스플레이하는데 이용하는 물리적 하드웨어 장치를 나타내는 c++기본 객체인 IDirect3DDevice9를 만드는데 이용된다.

    - IDirect3D9 객체는 장치 검증과 IDirect3DDevice9 객체 생성의 두 가지 용도로 사용된다.

    2) 장치 특성(D3DCAPS9)을 확인하여 하드웨어 지원 여부를 확인한다.

    - GetDeviceCaps 메소드를 사용하여 하드웨어 사용이 가능한지를 판단한다.

     

    3) D3DPRESENT_PARAMETERS 구조체 인스턴스를 초기화하고, 이 구조체는 우리가 만들고자 하는 IDirect3DDevice9 인스턴스의 특성을 지정하기 위한 몇가지 데이터 멤버들을 포함한다.

     

    4) 초기화된 D3DPRESENT_PARAMETERS 에 따라 IDirect3DDevice9 객체를 만들어낸다.

Designed by Tistory.