Koristim DirectX 9.0c february 2006, ovako izgleda funkcija koja postavlja direct3d
// inicijalizacija direct3d-a //////////////////////////////////////////////////
HRESULT Scene::InitializeD3D (HWND hwnd)
{
// kreiraj direct3d objekt
if (NULL == (m_pD3DObject = Direct3DCreate9(D3D_SDK_VERSION)))
return E_FAIL;
// podesavanje direct3d parametara
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof (d3dpp)); // ocisti strukturu
d3dpp.Windowed = TRUE; // aplikacija u windowed modu
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY; // nacin izmjene buffera
d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; // format back buffera
d3dpp.BackBufferCount = 1; // broj back buffera
d3dpp.BackBufferWidth = CLIENT_WIDTH; // sirina back buffera
d3dpp.BackBufferHeight = CLIENT_HEIGHT; // visina back buffera
d3dpp.EnableAutoDepthStencil = TRUE; // za koristenje ZBuffera
d3dpp.AutoDepthStencilFormat = D3DFMT_D16; // Format boje
// stvori direct3d device
if (FAILED(m_pD3DObject->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hwnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&m_pD3DDevice)))
{
return E_FAIL;
}
// render stanja
m_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
m_pD3DDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
m_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
//m_pD3DDevice->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);
m_pD3DDevice->SetRenderState(D3DRS_ZENABLE, TRUE);
return S_OK;
}
Hvala unaprijed.