DirectX Graphics 프로그래밍 가이드 Direct3D 의 기초지식 장치 정점 데이터의 처리 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
IDirect3DDevice9 인터페이스는, 소프트웨어와 하드웨어 양쪽 모두에서의 정점 처리를 지원 한다. 일반적으로, 소프트웨어와 하드웨어의 정점 처리에 관한 장치 능력은 같지 않다. 하드웨어의 능력은, 디스플레이 어댑터나 드라이버에 따라서 다르지만, 소프트웨어의 능력은 일정한다.
다음의 플래그는, 하드웨어 추상 계층 (HAL) 장치 및 레퍼런스 장치의 정점 처리 동작을 제어한다.
IDirect3D9::CreateDevice 를 호출할 때는, 몇개의 정점 처리 동작 플래그를 지정한다. 믹스 모드 플래그에서는, 장치는 소프트웨어와 하드웨어 양쪽 모두의 정점 처리가 가능하게 된다. 1 개의 장치에 대해서, 한 번에 1 개의 정점 처리 플래그 밖에 설정할 수 없다. 퓨어 장치 (D3DCREATE_PUREDEVICE)를 생성 할 때는, D3DCREATE_HARDWARE_VERTEXPROCESSING 플래그가 필요해서 주의 해야 한다.
단일 장치상에 2 개의 정점 처리 능력이 존재하지 않게 하기 위한(해), 실행시에는 하드웨어 정점 처리 능력만을 조회할 수 있다. 소프트웨어의 정점 처리 기능은 고정되어 실행시에 조회할 수 없다.
장치의 하드웨어 정점 처리 능력을 판정하려면 ,D3DCAPS9 구조체의 VertexProcessingCaps 멤버를 조사한다. 소프트웨어 정점 처리에 대해서는, 이하의 능력이 지원 되고 있다.
또, 다음의 표는, 소프트웨어 정점 처리 모드의 장치에 대해서,D3DCAPS9 구조체의 멤버로 설정되는 값을 나타내고 있다.
멤버 | 소프트웨어 정점 처리 능력 |
---|---|
MaxActiveLights | 제한 없음 |
MaxUserClipPlanes | 6 |
MaxVertexBlendMatrices | 4 |
MaxStreams | 16 |
MaxVertexIndex | 0xFFFFFFFF |
소프트웨어 정점 처리에서는, 제한 없음의 라이트수나 프로그래밍 가능한 정점 셰이더 등, 보증 끝난 정점 처리 능력 세트가 제공된다. 소프트웨어 정점 처리와 하드웨어 정점 처리는, HAL 장치 (하드웨어 정점 처리와 소프트웨어 정점 처리의 양쪽 모두를 지원 하는 유일한 장치 타입)를 사용해 언제라도 바꿀 수가 있다. 유일한 요건으로서 소프트웨어 정점 처리에 사용하는 정점 버퍼는, 시스템 메모리내에 할당할 수 있지 않으면 안 된다.