커스텀 정점 포맷이 정의 되면 다음은 정점을 초기화 합니다. Vertices 샘플 프로젝트에서는 필요한 Direct3D 오브젝트를 작성한 후에 애플리케이션 정의 함수인 InitVB를 호출해 이것을 실행합니다. 다음 샘플 코드는 3개의 커스텀 정점의 값을 초기화 합니다.
CUSTOMVERTEX vertices[] = { { 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, }, { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, }, };
상기 샘플 코드에서는 3개의 정점을 3각형의 포인트로 채우고 각 정점이 방사하는 컬러를 지정합니다. 제1포인트는 (150, 50)이고 컬러는 빨강(0xffff0000)입니다. 제2포인트는(250, 250)이고 컬러는 초록(0xff00ff00)입니다. 제3포인트는 (50, 250)이고 컬러는 청록(0xff00ffff)입니다. 이들 포인트는 각각 심도치는 0.5, RHW(Reciprocal of the W coordinate from the Homogeneous point;동차 좌표 w 성분의 역수)는 1.0입니다.
다음은 아래의 샘플코드에 나타낸 것처럼
if( FAILED( g_pd3dDevice->CreateVertexBuffer( 3*sizeof(CUSTOMVERTEX), 0 /*Usage*/, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL ) ) ) return E_FAIL;
정점 버퍼의 작성 후 다음 샘플 코드에 나온 것처럼 커스텀 정점 데이터로 그것을 채웁니다.
VOID* pVertices; if( FAILED( g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) ) return E_FAIL; memcpy( pVertices, vertices, sizeof(vertices) ); g_pVB->Unlock();
우선
그 다음 memcpy 를 사용해 정점은 정점 버퍼에 복사됩니다. 정점 버퍼에 정점이 읽어들여지면
이것으로 정점 버퍼에 정점이 격납됩니다. 다음은「 3 – 표시의 렌더링」에서 표시를 렌더링 하는 것을 다룹니다.