DirectX Graphics 프로그래밍 가이드 Direct3D 의 기초지식 장치 정점 데이터의 처리   [목차열람] [주소복사] [슬롯비우기]
정점 데이터의 처리
 
Microsoft DirectX 9.0

정점 데이터의 처리


IDirect3DDevice9 인터페이스는, 소프트웨어와 하드웨어 양쪽 모두에서의 정점 처리를 지원 한다. 일반적으로, 소프트웨어와 하드웨어의 정점 처리에 관한 장치 능력은 같지 않다. 하드웨어의 능력은, 디스플레이 어댑터나 드라이버에 따라서 다르지만, 소프트웨어의 능력은 일정한다.

다음의 플래그는, 하드웨어 추상 계층 (HAL) 장치 및 레퍼런스 장치의 정점 처리 동작을 제어한다.

IDirect3D9::CreateDevice 를 호출할 때는, 몇개의 정점 처리 동작 플래그를 지정한다. 믹스 모드 플래그에서는, 장치는 소프트웨어와 하드웨어 양쪽 모두의 정점 처리가 가능하게 된다. 1 개의 장치에 대해서, 한 번에 1 개의 정점 처리 플래그 밖에 설정할 수 없다. 퓨어 장치 (D3DCREATE_PUREDEVICE)를 생성 할 때는, D3DCREATE_HARDWARE_VERTEXPROCESSING 플래그가 필요해서 주의 해야 한다.

단일 장치상에 2 개의 정점 처리 능력이 존재하지 않게 하기 위한(해), 실행시에는 하드웨어 정점 처리 능력만을 조회할 수 있다. 소프트웨어의 정점 처리 기능은 고정되어 실행시에 조회할 수 없다.

장치의 하드웨어 정점 처리 능력을 판정하려면 ,D3DCAPS9 구조체의 VertexProcessingCaps 멤버를 조사한다. 소프트웨어 정점 처리에 대해서는, 이하의 능력이 지원 되고 있다.

또, 다음의 표는, 소프트웨어 정점 처리 모드의 장치에 대해서,D3DCAPS9 구조체의 멤버로 설정되는 값을 나타내고 있다.

멤버소프트웨어 정점 처리 능력
MaxActiveLights제한 없음
MaxUserClipPlanes6
MaxVertexBlendMatrices4
MaxStreams16
MaxVertexIndex0xFFFFFFFF

소프트웨어 정점 처리에서는, 제한 없음의 라이트수나 프로그래밍 가능한 정점 셰이더 등, 보증 끝난 정점 처리 능력 세트가 제공된다. 소프트웨어 정점 처리와 하드웨어 정점 처리는, HAL 장치 (하드웨어 정점 처리와 소프트웨어 정점 처리의 양쪽 모두를 지원 하는 유일한 장치 타입)를 사용해 언제라도 바꿀 수가 있다. 유일한 요건으로서 소프트웨어 정점 처리에 사용하는 정점 버퍼는, 시스템 메모리내에 할당할 수 있지 않으면 안 된다.

  하드웨어 정점 처리의 퍼포먼스는, 소프트웨어 정점 처리의 퍼포먼스에 필적한다. 이 때문에, 동일 장치 타입내에서 정점 처리를 위한 하드웨어 에뮬레이션 기능과 소프트웨어 에뮬레이션 기능의 양쪽 모두를 제공하는 것은 뛰어난 아이디어이다. 이것은 래스터화에는 적용되지 않는다. 래스터화에서는, 호스트 프로세서에 의한 처리 속도는 그래픽스 전용 하드웨어보다 저속이다. 따라서, 하드웨어 에뮬레이션과 소프트웨어 에뮬레이션의 래스터화의 양쪽 모두를 단일 장치 타입내에서 제공할 것은 없다. 단일 장치내의 런타임과 하드웨어 (드라이버)에 중복 하는 기능은, 소프트웨어 정점 처리뿐이다. 따라서, 다른 장치 능력은 모두, 드라이버에 의해 제공되는 잠재적으로 다른 기능이다.


© 2002 Microsoft Corporation. All rights reserved.
↑TOP