diff --git a/main.cpp b/main.cpp index 05a7c43..b46a228 100644 --- a/main.cpp +++ b/main.cpp @@ -1,10 +1,25 @@ #include #include +#include + +struct CUSTOMVERTEX { + float x, y, z, rhw; + uint32_t color; +}; + +#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE) + +const CUSTOMVERTEX vertices[] = { + { 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000 }, + { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00 }, + { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff }, +}; LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); -LPDIRECT3D9 g_pD3D = NULL; -LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; +IDirect3D9 * g_pD3D = NULL; +IDirect3DDevice9 * g_pd3dDevice = NULL; +IDirect3DVertexBuffer9 * g_pVB = NULL; HRESULT InitDirect3D(HWND hwnd) { @@ -46,9 +61,11 @@ void Render() g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0); - if (SUCCEEDED(g_pd3dDevice->BeginScene())) { - g_pd3dDevice->EndScene(); - } + g_pd3dDevice->BeginScene(); + g_pd3dDevice->SetStreamSource(0, g_pVB, 0, (sizeof (CUSTOMVERTEX))); + g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX); + g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1); + g_pd3dDevice->EndScene(); g_pd3dDevice->Present(NULL, NULL, NULL, NULL); } @@ -83,6 +100,27 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine if (!SUCCEEDED(InitDirect3D(hwnd))) return 0; + HRESULT res; + + res = g_pd3dDevice->CreateVertexBuffer(3 * (sizeof (CUSTOMVERTEX)), // length + 0, // usage + D3DFVF_CUSTOMVERTEX, // FVF + D3DPOOL_DEFAULT, // Pool + &g_pVB, //ppVertexBuffer + NULL //pSharedHandle + ); + if (FAILED(res)) + return 0; + + void * pVertices; + res = g_pVB->Lock(0, (sizeof (vertices)), &pVertices, 0); + if (FAILED(res)) + return 0; + + memcpy(pVertices, vertices, (sizeof (vertices))); + + g_pVB->Unlock(); + ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); @@ -105,7 +143,7 @@ LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_PAINT: { Render(); - ValidateRect(hwnd, NULL); + //ValidateRect(hwnd, NULL); } return 0; }