Trokut

Crtanje običnoga trokuta je dobar početak za upoznavanje sa API-jem. Tablica prikazuje usporedbu definiranja točaka i boje u Direct3D-u sa OpenGL-om.
Definiranje FVF-a se može postići sa dvije linije koda:

struct CUSTOMVERTEX {FLOAT X, Y, Z; D3DVECTOR NORMAL;};
#define CUSTOMFVF (D3DFVF_XYZ | D3DFVF_NORMAL)

trokut.cpp

Slika Direct3D OpenGL

Također je zanimljiva interpolacija boje između različito obojanih vrhova.

Slika Direct3D

Kocka

Kocka se definira slično kao u OpenGL-u sa svim svojim vrhovima. Ovaj primjer također sadrži osvjetljenje.
Svjetlo se može upaliti pomoću:

d3ddev->SetRenderState(D3DRS_LIGHTING, TRUE);


Ambient light se dodaje sa:

d3ddev->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_XRGB(50, 50, 50));


Diffuse light je malo kompleksniji:

void init_light(void)
{
D3DLIGHT9 light;
ZeroMemory(&light, sizeof(light));
light.Type = D3DLIGHT_DIRECTIONAL;
light.Diffuse = D3DXCOLOR(0.5f, 0.5f, 0.5f, 1.0f);
light.Direction = D3DXVECTOR3(-1.0f, -0.3f, -1.0f);
d3ddev->SetLight(0, &light);
d3ddev->LightEnable(0, TRUE);
}


kocka.cpp

Slika Direct3D