Professional Documents
Culture Documents
KK
KK
#include <windows.h>
#include <tchar.h>
#include "d3d9.h"
LPDIRECT3D9 pDirect3D = NULL;
LPDIRECT3DDEVICE9 pDirect3DDevice = NULL;
LPDIRECT3DVERTEXBUFFER9 pVertexBuffer = NULL; //
struct CUSTOMVERTEX
{
float x, y, z,
rhv;
DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)
class p
{
public:
int x, y;
};
/*
float p[4][2] = { { 1., 3. },
{ 15., 39. },
{ 189., 22. },
{ 179., 150. },
};
*/
float p[4][2] = { { 179., 150. },
{ 160., 200. },
{ 189., 215. },
{ 100., 150. },
};
int N = 20;
float t;
float dt = 1. / (N-1);
float a[4], b[4];
float a[4] = {
-p[0][0] + 3.f*p[1][0] - 3.f*p[2][0] + p[3][0],
3.f*p[0][0] - 6.f*p[1][0] + 3.f*p[2][0],
-3.f*p[0][0] + 3.f*p[1][0],
p[0][0]
};
float b[4] = {
-p[0][1] + 3.f*p[1][1] - 3.f*p[2][1] + p[3][1],
3.f*p[0][1] - 6.f*p[1][1] + 3.f*p[2][1],
-3.f*p[0][1] + 3.f*p[1][1],
p[0][1]
};
p[0][0];
p[0][1];
= p[3][0];
= p[3][1];
/*
a[0]
a[1]
a[2]
a[3]
=
=
=
=
b[0]
b[1]
b[2]
b[3]
=
=
=
=
*/
t = 0.f;
pDirect3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);
/*
int i;
for (i = 0; i < N - 1; i++)
pDirect3DDevice->DrawPrimitive(D3DPT_LINELIST, i,
1);
*/
pDirect3DDevice->DrawPrimitive(D3DPT_LINESTRIP, 0, N-1);
pDirect3DDevice->EndScene();
pDirect3DDevice->Present(NULL, NULL, NULL, NULL);
return S_OK;
}
WPARAM wparam,
LPARAM lparam)
{
switch (msg)
{
//
case WM_PAINT:
RenderingDirect3D();
ValidateRect(hwnd, NULL);
break;
//
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, msg, wparam, lparam);
}
NULL,
NULL,
hinstance,
NULL)))
return 0;
MSG msg;
ZeroMemory(&msg, sizeof msg);
if (SUCCEEDED(InitialDirect3D(hwnd)))
{
ShowWindow(hwnd, SW_SHOWDEFAULT); // desenam fereastra
UpdateWindow(hwnd); // reinoim fereastra
InitialVertexBuffer();
RenderingDirect3D();
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}