용책을 기준으로
IndexBuffer를 이용하여
Color가 들어간 Cube를
만들어 보았습니다.
주요 내용은 다음과 같습니다.
Vertex와 Index를 선언)_
IDirect3DVertexBuffer9* VB = 0;
IDirect3DIndexBuffer9* IB = 0;
구조체 생성 및 설정)_
struct Vertex
{
Vertex(){}
Vertex(
FLOAT x, FLOAT y, FLOAT z, D3DCOLOR c)
{
_x = x; _y = y; _z = z; _color = c;
}
형상 형성 및 구성)_
Device->CreateVertexBuffer(
8 * sizeof(Vertex),
D3DUSAGE_WRITEONLY,
Vertex::FVF,
D3DPOOL_MANAGED,
&VB,
0);
...
Device->CreateIndexBuffer(
36 * sizeof(WORD),
D3DUSAGE_WRITEONLY,
D3DFMT_INDEX16,
D3DPOOL_MANAGED,
&IB,
0);
....
스테이트 파라미터를 설정)_
Device->SetRenderState(D3DRS_LIGHTING, FALSE);
만든 Cube를 출력)_
Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 36, 0, 12);
다쓴 Vertex와 Index를 반환)_
d3d::Release<IDirect3DVertexBuffer9*>(VB);
d3d::Release<IDirect3DIndexBuffer9*>(IB);
IDirect3DVertexBuffer9* VB = 0;
IDirect3DIndexBuffer9* IB = 0;
구조체 생성 및 설정)_
struct Vertex
{
Vertex(){}
Vertex(
FLOAT x, FLOAT y, FLOAT z, D3DCOLOR c)
{
_x = x; _y = y; _z = z; _color = c;
}
FLOAT _x, _y, _z;
D3DCOLOR _color;
static const DWORD FVF;
};
형상 형성 및 구성)_
Device->CreateVertexBuffer(
8 * sizeof(Vertex),
D3DUSAGE_WRITEONLY,
Vertex::FVF,
D3DPOOL_MANAGED,
&VB,
0);
...
Device->CreateIndexBuffer(
36 * sizeof(WORD),
D3DUSAGE_WRITEONLY,
D3DFMT_INDEX16,
D3DPOOL_MANAGED,
&IB,
0);
....
스테이트 파라미터를 설정)_
Device->SetRenderState(D3DRS_LIGHTING, FALSE);
만든 Cube를 출력)_
Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 36, 0, 12);
다쓴 Vertex와 Index를 반환)_
d3d::Release<IDirect3DVertexBuffer9*>(VB);
d3d::Release<IDirect3DIndexBuffer9*>(IB);
이 소스의 완성 모습은 다음과 같습니다.
'개발실 ◐ ━━ > DirectX' 카테고리의 다른 글
World Transformation(월드 변환) (0) | 2012.01.30 |
---|---|
Rendering Pipeline 과정 (0) | 2012.01.30 |
다이렉트 초기화 (2) | 2012.01.14 |
Direct3D Architecture(Direct3D 9)에 관한 이해 (4) | 2012.01.14 |