Directx9를 이용한 3D GAME 프로그래밍 입문

Date:     Updated:

카테고리:

Chapter 1 DirectX3D 초기화

01-1 DirectX3D 개요

  • Direct3D는 3D 가속 하드웨어를 이용해 3D 세계를 표현할 수 있도록 해주는 저수준 그래픽 API(애플리케이션 프로그래밍 인터페이스)이다

graphic

  • 주의해야 할 점은 Directx3D가 공개하고 있는 기능이라고 해도 그래픽 하드웨어에서 반드시 지원하리라는 보장은 없다는 것이다
  • Directx3D는 장치 제조 사에게 HAL을 구현할 것을 요구하고 있다
  • 여러분이 원하는 기능을 장치가 제공하는지의 여부를 확인해야 한다
  • REF 장치를 이용하여 장치에서 제공하지 않는 Directx3D 기능을 이용하는 코드를 작성하고 테스트할 수 있다
  • REF 장치는 DirectX SDK에만 포함되며, 최종 사용자에게는 배포할 수 없다
  • 우리의 장치를 만들 때는 어떤 타입을 원하는지를 지정해야 하므로 이들 타입에 대해서는 반드시 기억해야 한다

01-2 COM

  • 컴포넌트 객체 모델(COM)은 DirectX를 프로그래밍 언어에 독립적으로 만들어주고 하위 호환성을 갖출 수 있게 하는 기술이다

01-3 약간의 준비

  • 표면은 Direct3D가 주로 2D 이미지 데이터를 보관하는 데 이용하는 픽셀의 행렬이다
  • 코드에서 표면을 이용하는 데는 IDirect3DSurface9 인터페이스가 사용된다
  • 멀티 샘플링은 픽셀 매트릭스로 이미지를 표현할 때 나타나는 거친 이미지를 부드럽게 만드는 데 이용되는 기술이다
  • 표면이나 텍스처를 만들기 위해서는 Direct3D 자원의 픽셀 포맷을 지정해야 한다
  • 표면이나 그 밖의 다양한 Direct3D 자원들은 여러 가지 종류의 메모리 풀에 보관할 수 있다
  • Direct3D는 보통 두 개나 세 개의 표면을 하나의 컬렉션으로 관리하며, 이를 스왑체인이라 부른다
  • 스왑 체인과 페이지 플리핑 기술은 프레임 간의 부드러운 애니메이션을 제공하기 위한 것이다

buffer

  • 화면 밖의 표면(후면 버퍼)에 렌더링을 수행하고, 전면 버퍼 표면의 디스플레이가 완료되면 스왑 체인의 끝으로 돌아가 후면 버퍼를 전면 버퍼로 전환하는 방법을 이용한다 이와 같은 과정을 시연이라 한다
  • 렌더링 코드의 구조는 다음과 같다 ( 후면 버퍼를 렌더링 한다 -> 후면 버퍼를 시연한다 -> 1번으로 돌아간다 )
  • 깊이 버퍼는 이미지 데이터가 아닌 특정 픽셀의 깊이 정보를 포함하는 표면을 말한다
  • Direct3D는 물체의 픽셀이 다른 픽셀을 가리는지의 여부를 판단하기 위해 깊이 버퍼링 혹은 z-버퍼링이라는 테크닉을 이용한다
  • 버텍스는 3D 기하물체를 구성하는 기본 단위로, 소프트웨어(소프트웨어 버텍스 프로세싱)나 하드웨어(하드웨어 버텍스 프로세싱)의 두 가지 방법으로 처리할 수 있다
  • Direct3D가 제공하는 모든 기능들은 D3DCAPS9 구조체 내의 비트와 데이터 멤버에 대응된다
  • DevCaps는 장치 특성의 의미를 가진다

01-4 Direct3D 초기화하기

  • IDirect3D9 인터페이스로의 포인터를 얻는다 -> 장치 특성(D3DCAPS9)을 확인한다 -> D3DPRESENT_PARAMETERS 구조체 인스턴스를 초기화 한다 -> 초기화된 D3DPRESENT_PARAMETERS에 따라 IDirect3DDevice9 객체를 만들어낸다
  • 기본 디스플레이 어댑터와 대응되는 IDirect3DDevice9 객체를 생성할 때는 반드시 원하는 버텍스 프로세싱 모드를 지정해야 한다 이용할 수 있다면 하드웨어 버텍스 프로세싱을 선택하는 것이 좋다

01-5 예제 애플리케이션 : Direct3D 초기화

  • 이 예제를 포함한 이 책 안의 모든 예제는 d3dUtility.h와 d3dUtility.cpp 파일의 코드를 이용한다 이 파일은 이 책 웹 사이트의 해당 단원 웹 페이지에서 찾을 수 있으며, 윈도우 생성이나 Direct3D 초기화, 애플리케이션 메시지 루프로의 진입 등과 같은 모든 Direct3D 애플리케이션이 구현해야 하는 공통적인 함수들을 포함하고 있다
  • IDirect3DDevice9 인터페이스는 그래픽 장치를 제어하기 위한 소프트웨어 인터페이스이다


맨 위로 이동하기

댓글남기기