draw a triangle using fixed-function pipeline
This commit is contained in:
parent
18270a2ae9
commit
eedf590519
48
main.cpp
48
main.cpp
@ -1,10 +1,25 @@
|
||||
#include <windows.h>
|
||||
#include <d3d9.h>
|
||||
#include <stdint.h>
|
||||
|
||||
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->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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user