꼭짓점 버퍼(Direct3D 9)

IDirect3DVertexBuffer9 인터페이스로 표현되는 꼭짓점 버퍼는 꼭짓점 데이터를 포함하는 메모리 버퍼입니다. 꼭짓점 버퍼에는 IDirect3DDevice9 인터페이스에서 렌더링 메서드를 사용하여 렌더링할 수 있는 모든 꼭짓점 형식(변환 또는 변환되지 않음, 조명 또는 조명 해제)이 포함될 수 있습니다. 변환, 조명 또는 클리핑 플래그 생성 등의 작업을 수행하는 꼭짓점 버퍼에서 꼭짓점을 처리할 수 있습니다. 변환은 항상 수행됩니다.

꼭짓점 버퍼는 유연하기 때문에 변환된 기하 도형의 재사용을 준비하기 위한 가장 이상적인 준비 지점입니다. 꼭짓점 버퍼를 하나 만들고 그 안에서 꼭짓점에 대한 변환, 조명 및 클리핑을 수행할 수 있으며, 인터리브 렌더링 상태가 변하더라도 재변환 없이 필요한 만큼 장면의 모델을 렌더링할 수 있습니다. 이 기능은 여러 텍스처를 사용하는 모델을 렌더링할 때 유용합니다. 기하 도형을 한 번만 변환하면 필요에 따라 그 일부를 렌더링하고 필요한 텍스처 변경 사항을 인터리브할 수 있습니다. 꼭짓점을 처리한 후에 발생한 렌더링 상태 변경 사항은 다음에 꼭짓점을 처리할 때 적용됩니다.

설명

꼭짓점 버퍼는 기능 측면에서 설명됩니다. 시스템 메모리에만 존재할 수 있는 경우, 쓰기 작업에만 사용되는 경우 및 포함할 수 있는 꼭짓점의 유형과 수입니다. 이러한 모든 특성은 D3DVERTEXBUFFER_DESC 구조로 유지됩니다.

Format 멤버는 꼭짓점 버퍼임을 나타내기 위해 D3DFMT_VERTEXDATA 로 설정됩니다. Type은 꼭짓점 버퍼의 리소스 종류를 식별합니다. 사용 구조 멤버에는 일반 기능 플래그가 포함됩니다. D3DUSAGE_SOFTWAREPROCESSING 플래그는 꼭짓점 버퍼가 소프트웨어 꼭짓점 처리와 함께 사용됨을 나타냅니다. 사용량에 D3DUSAGE_WRITEONLY 플래그가 있으면 꼭짓점 버퍼 메모리가 쓰기 작업에만 사용됨을 나타냅니다. 이렇게 하면 드라이버가 빠른 처리 및 렌더링을 가능하게 하는 최상의 메모리 위치에 꼭짓점 데이터를 배치할 수 있습니다. D3DUSAGE_WRITEONLY 플래그를 사용하지 않으면 드라이버는 읽기 작업에 비효율적인 위치에 데이터를 배치할 가능성이 적습니다. 이렇게 하면 처리 및 렌더링 속도가 약간 희생됩니다. 이 플래그를 지정하지 않으면 애플리케이션이 꼭짓점 버퍼 내의 데이터에 대해 읽기 및 쓰기 작업을 수행한다고 가정합니다.

풀은 꼭짓점 버퍼에 할당된 메모리 클래스를 지정합니다. D3DPOOL_SYSTEMMEM 플래그는 시스템이 시스템 메모리에 꼭짓점 버퍼를 생성했음을 나타냅니다.

Size 멤버는 꼭짓점 버퍼 데이터의 크기를 바이트 단위로 저장합니다. FVF 멤버에는 버퍼에 포함된 꼭짓점 유형을 식별하는 D3DFVF 의 조합이 포함되어 있습니다.

메모리 풀 및 사용량

풀(메모리 클래스) 및 사용 매개 변수를 사용하는 IDirect3DDevice9::CreateVertexBuffer 메서드를 사용하여 꼭짓점 버퍼를 만들 수 있습니다. IDirect3DDevice9::CreateVertexBuffer 는 고정 함수 꼭짓점 처리에 사용하거나 프로세스 꼭짓점의 출력으로 사용할 지정된 FVF 코드를 사용하여 만들 수도 있습니다. 자세한 내용은 FVF 꼭짓점 버퍼(Direct3D 9)를 참조하세요.

해당 디바이스에 대해 혼합 모드 또는 소프트웨어 꼭짓점 처리(D3DCREATE_MIXED_VERTEXPROCESSING/D3DCREATE_SOFTWARE_VERTEXPROCESSING)를 사용하도록 설정하면 D3DUSAGE_SOFTWAREPROCESSING 플래그를 설정할 수 있습니다. D3DUSAGE_SOFTWAREPROCESSING 혼합 모드에서 소프트웨어 꼭짓점 처리와 함께 사용할 버퍼를 설정해야 하지만 혼합 모드에서 하드웨어 꼭짓점 처리를 사용할 때 최상의 성능을 위해 설정해서는 안 됩니다. (D3DCREATE_HARDWARE_VERTEXPROCESSING). 그러나 단일 버퍼를 하드웨어 및 소프트웨어 꼭짓점 처리와 함께 사용할 때는 D3DUSAGE_SOFTWAREPROCESSING 설정이 유일한 옵션입니다. D3DUSAGE_SOFTWAREPROCESSING 소프트웨어 디바이스뿐만 아니라 혼합에도 사용할 수 있습니다.

하드웨어에서 꼭짓점 처리가 수행되는 경우에도 D3DPOOL_SYSTEMMEM 지정하여 꼭짓점 및 인덱스 버퍼를 시스템 메모리에 강제 적용할 수 있습니다. 드라이버가 이러한 버퍼를 AGP 메모리에 배치할 때 페이지 잠금 메모리가 지나치게 많이 발생하지 않도록 하는 방법입니다.

이 섹션에서는 Direct3D 애플리케이션에서 꼭짓점 버퍼를 이해하고 사용하는 데 필요한 개념을 소개합니다. 정보는 다음 섹션으로 나뉩니다.

Direct3D 리소스

꼭짓점 및 인덱스 버퍼에서 렌더링(Direct3D 9)

인덱스 버퍼(Direct3D 9)