티스토리 뷰
하드웨어 또는 소프트웨어로 3D를 표현하는 저수준 그래픽 API(Application Programming Interface)
3D를 쉽게 표현하도록 도와주는 장치
어떤 애플리케이션과 그래픽장치를 연결해줌
SDK 는 명령어들을 인간이 해석가능한 코드로 주어 실행파일을 제작할 수 있게 하는애
사용자의 입장에서 DirectX는 개발자가 SDK 통해개발한 실행파일을 분석해(코드를 해석해) HAL 디바이스에 명령 내리는 애
API, c++에 대한 지식 필요
이런식
The following diagram shows the relationships between a Window application, Direct3D,GDI, and the hardware.
Direct3D exposes a device-independent interface to an application. Direct3D applications can exist alongsideGDI applications, and both have access to the computer's graphics hardware through the device driver for the graphics card. UnlikeGDI, Direct3D can take advantage of hardware features by creating a hal device.
A hal device provides hardware acceleration to graphics pipeline functions, based upon the feature set supported by the graphics card. Direct3D methods are provided to retrieve device display capabilities at run time. (See GetDeviceCaps and GetDeviceCaps.) If a capability is not provided by the hardware, the hal does not report it as a hardware capability.
For more information about hal and reference devices supported by Direct3D, see Device Types (Direct3D 9).
많은 종류의 그래픽카드의 다양한 작동방법들에 따라 각각맞춤 코드로 3D 프로그램을 만드는것은 상당한..
따라서, 각 장치의 세부적인 부분을 몰라도 Direct3D 의 어떤 함수로서 그래픽카드의 어떠한 함수를 이용할 수 있도록 하였다.
HAL 과 REF
HAL 장치 (Hardware Abstraction Layer 하드웨어 추상계층)
CPU대신 일할 그래픽카드를 조종하도록 해주는 장치고유의 코드
"Direct3D가 각 장치의 세부적인 부분을 제어할 필요가 없게 하였다."
"응용프로그램이 하드웨어를 이용하되 하드웨어 장치에 독립적인 규약 확립"
하드웨어에게 정점처리, 픽셀 처리 등을 지시한다
(점들의 모니터상 좌표가 정수형 좌표이리란 보장은 없다 ex(0.22, 0.324, 0.333)
이러한 ( 소수점형태의) 데이터들을 CPU 혼자 감당할 수 없음
HAL장치가 이에 최적화된 연산을 대신 )
장치 제조사가 자신들의 장치가 지원하는 모든 기능을 사용, HAL구현
Direct3D도 기능들에 대한 정의를 구현.
Direct3D 여러 장치들에서 사용할 수 있는 기능들을 정의해놓아야 하기때문에 특정 제조사에는 없는 기능들에대한 정의가 있을 수 있다. 따라서 HAL에 포함되지 않는(소프트웨어 애뮬레이션이 가능한 버텍스 처리작업 제외) Direct3D 함수를 호출할 시 오류 ( 장치가 해당기능을 제공하는지에 대한 확인 피료)
HAL은 장치에 의존적
이 때 내가 가진 장치에서는 지원하지 않지만 Direct3D에서 제공하는 기능을 이용하는 프로그램 작성하고 싶을 때 이용할 수 있는 장치가 "REF"
REF 장치 (Reference Resterizer )
Direct3D가 특정장치에서는 지원하지 않을 수도있는 등의 모든 D3D API를 이용할 수 있도록 만든..
모든 DirectAPI 를 소프트웨어로 애뮬레이트. -> 하드웨어 장치에 비의존적
- 순수 개발목적으로만 제공 ( DirectX SDK에만 포함되며, 최종사용자에게는 배포 불가, 매우느림)
어떤 장치를 사용할 지 장치를 만들 때 정의해주어야함 D3DDEVTYPE 멤버를 이용해 정의 가능( D3DDEVTYPE_HAL, D3DDEVTYPE_REF)
어떻게 그려냄??
Direct3D Architecture (D3D 9)
A view of the internal processing architecture of the Direct3D rendering system.
-더보기- Direct3D그래픽 파이프라인
-더보기- 이들은 COM객체를 이용한다는데...
https://msdn.microsoft.com/en-us/library/windows/desktop/hh769064(v=vs.85).aspx
https://ko.wikipedia.org/wiki/Direct3D
https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb219625(v=vs.85).aspx
https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb219679(v=vs.85).aspx
'ComComComCom > DX .. D3D' 카테고리의 다른 글
[fucntion] Direct3DCreate9 (0) | 2017.06.12 |
---|---|
크라메르 법을 이용한 역행렬, 가우시안법을 이용한 역행렬 퍼포먼스 비교한 글 캡쳐 (0) | 2017.06.11 |
com객체 컴포넌트 오브젝트 모델 (0) | 2017.06.11 |
[function] D3DXMatrixPerspectiveFovLH (0) | 2017.06.06 |
[function] D3DXMatrixLookAtLH (0) | 2017.06.06 |