알쿠미 2016. 7. 2. 22:16

1. Direct3D 9와 11의 차이점

Direct3D 9 과 Direct3D 11이 다른점 9는 능력 집합의 일부만 지원하고 하드웨어가 지원하지 않는 기능을 사용했을 때 지원하는지를 점검하고 지원하지 않으면 호출이 실패하게 되었지만 11에선 기능을 지원하는지 점검할 필요 없이 11의 대응장치이려면 반드시 능력집합 전체를 지원해야한다.

 

2. COM ( Component Object Model )

DirectX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 하는 기술이다.

흔히 인터페이스라고 불린다.

 

COM의 인터페이스는 C++의 new 키워드로 생성하지 않는다.

인터페이스를 사용하고 난 후에는 delete로 삭제하는 것이 아니라 그 인터페이스의 Release 메소드를 호출해 주어야 한다.

(COM인터페이스는 IUnknown이라는 COM 인터페이스의 기능을 상속받는데, 그 인터페이스가 Release라는 메서드를 제공한다.) - COM객체들이 자신만의 방법으로 메모리를 관리하기 때문이다.

 

3. 텍스처 및 자료 자원 형식

텍스처는 자료 원소들의 행렬이라고 생각하면된다. 2차원 텍스처엔 한 픽셀의 색상이 들어갈 수 있고 , 법선 맵핑에선 3차원 벡터가 들어갈 수도 있다.

하지만 모든 데이터가 들어갈수 있는것은 아니고 정해진 포멧을 따르는 자료만 담을 수 있다.

구체적인 형식은 DXGI_FORMAT이라는 열거형으로 지정한다.

 

ⓐ DXGI_FORMAT_R32G32B32_FLOAT : 각 원소는 32비트 부동소수점 성분 세개로 이루어진다.

 

ⓑ DXGI_FORMAT_R16G16B16A16_UNORM : 각 원소는 [0,1] 구간으로 사상되는 16비트 성분 네개로 이루어진다.

 

ⓒ DXGI_FORMAT_R32G32_UNIT : 각 원소는 32비트 부호없는 정수 성분 두 개로 이루어 진다.

 

ⓓ DXGI_FORMAT_R8G8B8A8_UNORM : 각 원소는 [0,1] 구간으로 사상되는 8비트 부호 없는 성분 네개로 이루어진다.

 

ⓔ DXGI_FORMAT_R8G8B8A8_SNORM : 각 원소는 [-1, 1] 구간으로 사상되는 8비트 부호 있는 성분 네개로 이루어진다.

 

ⓕ DXGI_FORMAT_R8G8B8A8_SINT : 각 원소는 [-128, 127] 구간으로 사상되는 8비트 부호있는 정수 성분 네 개로 이루어진다.

 

ⓖ DXGI_FORMAT_R8G8B8A8_UNIT : 각 원소는 [0, 255] 구간으로 사사아되는 8비트 부호 없는 정수 성분 네 개로 이루어진다.

 

DXGI_FORMAT_R8G8B8A8_TYPELESS 이런 무형식도 가능하고

DXGI_FORMAT_R32G32B32_FLOAT 이 형식을 사용하더라도 색이 아니라 3차원 벡터를 넣는 것도 가능하다.