정점 버퍼를 생성 한다.
HRESULT CreateVertexBuffer(
UINT Length,
DWORD Usage,
DWORD FVF,
D3DPOOL Pool,
IDirect3DVertexBuffer9** ppVertexBuffer,
HANDLE* pHandle
);
Length : 버퍼에 할당할 바이트 수. 예를들어 3개의 버텍스를 보관할수 있는 버텍스 버퍼를 만들고자 한다면 3 * sizeof(버텍스 구조체)로 지정한다.
Usage : 버퍼가 이용되는 방법을 결정
보통은 0을 사용한다. 또한 다음과 같은 플래그를 사용할 수 있다.
D3DUSAGE_DYNAMIC : 동적 버퍼생성, 비디오 메모리에 저장. 갱신이 빠름. 파티클등에 사용
D3DUSAGE_POINTS : 포인트 기본형을 보관할 것임을 지정
D3DUSAGE_SOFTWAREPROCESSING : 버텍스 프로세싱을 소프트웨어로 처리
D3DUSAGE_WRITEONLY : 애플리케이션이 버퍼에 쓰기만을 수행할 것임을 지정. 읽기 오류
FVF : 버텍스 버퍼에 보관될 버텍스의 유연한 버텍스 포맷, 버텍스 구조체에 정의된 데이터의 순서와 일치
Pool : 버퍼가 위치할 메모리 풀
ppVertexBuffer : 만들어질 버텍스 버퍼를 받을 포인터
pHandle : 반환될 정점 버퍼의 인터페이스
예를 들면...아래와 같이 만든다.
if (FAILED(g_pd3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB, NULL)))