다음을 통해 공유


꼭짓점 버퍼(Direct3D 9)

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

꼭짓점 버퍼의 유연성은 변형된 기하 도형을 재사용하기 위한 이상적인 준비 지점입니다. 단일 꼭짓점 버퍼를 만들고, 꼭짓점을 변환하고, 밝게 하고, 클립할 수 있으며, 인터리브 렌더링 상태 변경이 있더라도 다시 변환하지 않고도 필요에 따라 장면에서 모델을 렌더링할 수 있습니다. 이는 여러 텍스처를 사용하는 모델을 렌더링할 때 유용합니다. 기하 도형은 한 번만 변환된 다음 필요한 텍스처 변경 내용과 인터리브하여 필요에 따라 렌더링할 수 있습니다. 꼭짓점이 처리된 후의 렌더링 상태 변경 내용은 다음에 꼭짓점이 처리될 때 적용됩니다.

묘사

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

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

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

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

메모리 풀 및 사용량

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

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

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

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

Direct3D 리소스

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

인덱스 버퍼(Direct3D 9)