-
용책 다이렉트 초기화 정리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 객체를 만들어낸다.
'Programing > DirectX' 카테고리의 다른 글
X 파일 읽고 렌더링하기 (0) 2008.05.23 메쉬 관련 ID3DXBuffer (0) 2008.05.23 ID3DXFont 사용하여 문자 출력하기 (0) 2008.05.19 pitch, yaw, roll 에 관해서 (2) 2008.05.17 다이렉트3D 카메라에 응용되는 벡터 함수 (1) 2008.05.17 Direct3D에서 지원하는 광원들 (0) 2008.05.08 SDK 튜토 2번 정점 만들기 (0) 2008.05.08 정점 버퍼 생성하기 (0) 2008.05.08 메시지 루프 (0) 2008.05.07 다이렉트 디바이스 생성(메시지루프전까지) (0) 2008.05.07