IDirect3DDevice9::CreateVertexBuffer 메서드(d3d9helper.h)

꼭짓점 버퍼를 만듭니다.

구문

HRESULT CreateVertexBuffer(
  [in]          UINT                   Length,
  [in]          DWORD                  Usage,
  [in]          DWORD                  FVF,
  [in]          D3DPOOL                Pool,
  [out, retval] IDirect3DVertexBuffer9 **ppVertexBuffer,
  [in]          HANDLE                 *pSharedHandle
);

매개 변수

[in] Length

형식: UINT

꼭짓점 버퍼의 크기(바이트)입니다. FVF 꼭짓점 버퍼의 경우 길이는 하나 이상의 꼭짓점을 포함할 만큼 충분히 커야 하지만 꼭짓점 크기의 배수일 필요는 없습니다. FVF가 아닌 버퍼의 길이는 유효성이 검사되지 않습니다. 설명 부분을 참조하세요.

[in] Usage

형식: DWORD

사용량은 0일 수 있으며 이는 사용량 값을 나타내지 않습니다. 그러나 사용이 필요한 경우 하나 이상의 D3DUSAGE 상수 조합을 사용합니다. CreateVertexBuffer의 사용 매개 변수를 IDirect3D9::CreateDevice의 동작 플래그와 일치시키는 것이 좋습니다. 자세한 내용은 설명 부분을 참조하세요.

[in] FVF

형식: DWORD

이 버퍼의 꼭짓점 형식을 설명하는 사용 지정자인 D3DFVF의 조합입니다. 이 매개 변수가 유효한 FVF 코드로 설정된 경우 생성된 꼭짓점 버퍼는 FVF 꼭짓점 버퍼입니다(설명 참조). 그렇지 않으면 이 매개 변수가 0으로 설정된 경우 꼭짓점 버퍼는 FVF가 아닌 꼭짓점 버퍼입니다.

[in] Pool

형식: D3DPOOL

리소스를 배치할 유효한 메모리 클래스를 설명하는 D3DPOOL 열거형 형식의 멤버입니다. D3DPOOL_SCRATCH 설정하지 마세요.

[out, retval] ppVertexBuffer

형식: IDirect3DVertexBuffer9**

만든 꼭짓점 버퍼 리소스를 나타내는 IDirect3DVertexBuffer9 인터페이스에 대한 포인터의 주소입니다.

[in] pSharedHandle

형식: HANDLE*

예약되어 있습니다. 이 매개 변수를 NULL로 설정합니다. 이 매개 변수는 Windows Vista용 Direct3D 9에서 리소스를 공유하는 데 사용할 수 있습니다.

반환 값

형식: HRESULT

메서드가 성공하면 반환 값이 D3D_OK. 메서드가 실패하면 반환 값은 D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY 중 하나일 수 있습니다.

설명

꼭짓점 버퍼는 하드웨어 또는 소프트웨어 꼭짓점 처리와 함께 사용할 수 있습니다. 이는 디바이스 및 꼭짓점 버퍼를 만드는 방법에 따라 결정됩니다.

디바이스를 만들 때 CreateDevice는 동작 플래그를 사용하여 하드웨어 또는 소프트웨어에서 꼭짓점을 처리할지 여부를 결정합니다. 다음과 같은 세 가지 가능성이 있습니다.

  • D3DCREATE_HARDWARE_VERTEXPROCESSING 설정하여 하드웨어에서 꼭짓점을 처리합니다.
  • D3DCREATE_SOFTWARE_VERTEXPROCESSING 설정하여 소프트웨어에서 꼭짓점을 처리합니다.
  • D3DCREATE_MIXED_VERTEXPROCESSING 설정하여 하드웨어 또는 소프트웨어에서 꼭짓점을 처리합니다.
혼합 모드 디바이스는 디바이스를 만든 후 소프트웨어 및 하드웨어 처리( IDirect3DDevice9::SetSoftwareVertexProcessing 사용) 간에 전환해야 할 수 있습니다.

꼭짓점 버퍼를 만들 때 CreateVertexBuffer는 사용 매개 변수를 사용하여 하드웨어 또는 소프트웨어에서 꼭짓점을 처리할지 여부를 결정합니다.

  • CreateDevice에서 D3DCREATE_HARDWARE_VERTEXPROCESSING 사용하는 경우 CreateVertexBuffer는 0을 사용해야 합니다.
  • CreateDevice에서 D3DCREATE_SOFTWARE_VERTEXPROCESSING 사용하는 경우 CreateVertexBuffer는 0 또는 D3DUSAGE_SOFTWAREPROCESSING 사용해야 합니다. 두 값의 경우 꼭짓점은 소프트웨어에서 처리됩니다.
  • CreateDevice에서 D3DCREATE_MIXED_VERTEXPROCESSING 사용하는 경우 CreateVertexBuffer는 0 또는 D3DUSAGE_SOFTWAREPROCESSING 사용할 수 있습니다.
혼합 모드 디바이스에서 꼭짓점 버퍼를 사용하려면 하드웨어 또는 소프트웨어 처리에 모두 사용할 수 있는 단일 꼭짓점 버퍼를 만듭니다. IDirect3DDevice9::SetStreamSource를 사용하여 현재 꼭짓점 버퍼를 설정하고 필요한 경우 IDirect3DDevice9::SetRenderState를 사용하여 디바이스 동작을 일치하도록 변경합니다. 꼭짓점 버퍼 사용량이 디바이스 동작과 일치하는 것이 좋습니다. 소프트웨어 처리를 위해 만든 꼭짓점 버퍼는 비디오 메모리에 있을 수 없습니다.

IDirect3DDevice9 인터페이스는 꼭짓점 버퍼 개체에 저장된 꼭짓점 데이터를 사용하여 기본 형식의 렌더링을 지원합니다. 꼭짓점 버퍼는 IDirect3DDevice9에서 생성되며 만들어지는 IDirect3DDevice9 개체에서만 사용할 수 있습니다.

유효한 FVF 코드여야 하는 0이 아닌 값으로 설정하면 FVF 매개 변수는 버퍼 콘텐츠가 FVF 코드로 특징지어지도록 나타냅니다. FVF 코드를 사용하여 만든 꼭짓점 버퍼를 FVF 꼭짓점 버퍼라고 합니다. 자세한 내용은 FVF 꼭짓점 버퍼(Direct3D 9)를 참조하세요.

비 FVF 버퍼를 사용하여 다중 패스 렌더링 또는 다중 텍스트 렌더링 중에 데이터를 단일 패스로 인터리빙할 수 있습니다. 이를 위해 한 버퍼에는 기하 도형 데이터가 포함되고 다른 버퍼에는 렌더링할 각 텍스처에 대한 텍스처 좌표가 포함됩니다. 렌더링할 때 기하 도형 데이터를 포함하는 버퍼는 텍스처 좌표를 포함하는 각 버퍼와 인터리브됩니다. FVF 버퍼를 대신 사용한 경우 각 버퍼는 렌더링된 각 텍스처와 관련된 텍스처 좌표 데이터 외에도 동일한 기하 도형 데이터를 포함해야 합니다. 이렇게 하면 사용된 전략에 따라 속도 또는 메모리 페널티가 발생합니다. 텍스처 좌표에 대한 자세한 내용은 텍스처 좌표(Direct3D 9)를 참조하세요.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 d3d9helper.h(D3D9.h 포함)
라이브러리 D3D9.lib

추가 정보

IDirect3DDevice9

IDirect3DDevice9::P rocessVertices

IDirect3DVertexBuffer9::GetDesc

꼭짓점 버퍼(Direct3D 9)