이번 장에서는 키보드를 조작하여 삼각형을 움직여 보자
삼각형을 움직이기 위해 WM_KEYDOWN 메세지를 사용할 것이다.

if ((lParam & 0x40000000)) // 버튼을 계속 누르고 있다면...... break; lParam의 30번째 비트는 전의 키상태를 나타낸다. 1이면 그전의 키가 눌러진 상태이고 0이면 전의 키상태가 UP상태이다. 쉽게 말하면 0이면 키보드를 처음 누를때 상태이다. 키를 처음 눌렀을때만 메세지를 처리할 것이다 키보드를 누르면 g_fx, g_fy 값으로 월드 좌표를 바꾼다. RenderInit() 함수중의 코드 CUSTOMVERTEX vertex[] = { // triangle {-1.0f,-1.0f, 0.7f, 0xffff0000}, { 0.0f, 1.0f, 0.7f, 0xff00ff00}, { 1.0f,-1.0f, 0.7f, 0xff0000ff}, // square {-1.0f,-1.0f, 0.5f, 0xff}, {-1.0f, 1.0f, 0.5f, 0xff}, { 1.0f,-1.0f, 0.5f, 0xff}, { 1.0f, 1.0f, 0.5f, 0xff} }; // Create the vertex buffer if(FAILED(g_d3d_Device->CreateVertexBuffer(7*sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_VertexBuffer))) { return false; } =================================================================================== Render3D()함수의 코드 //삼각형을 그린다. D3DXMatrixTranslation( &matTranslation, g_fx, g_fy, 0.0f ); g_d3d_Device->SetTransform( D3DTS_WORLD, &(matTranslation) ); g_d3d_Device->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); //2개의 정지해 있는 사각형을 그린다. D3DXMatrixTranslation( &matTranslation, -1.5f, 1.5f, 0.0f ); g_d3d_Device->SetTransform( D3DTS_WORLD, &(matTranslation) ); g_d3d_Device->DrawPrimitive( D3DPT_TRIANGLESTRIP, 3, 2 ); D3DXMatrixTranslation( &matTranslation, -1.5f, -1.5f, 0.0f ); g_d3d_Device->SetTransform( D3DTS_WORLD, &(matTranslation) ); g_d3d_Device->DrawPrimitive( D3DPT_TRIANGLESTRIP, 3, 2 ); RenderInit()함수에서 7개의 버텍스가 포함되어 있는 버퍼를 만든다. 0부터 3까지는 삼각형의 버텍스, 4부터 7까지 4개의 버텍스는 사각형을 만드는데 필요하다. Render3D()에서 삼각형을 그릴때: g_d3d_Device->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 )와 같이 버텍스 버퍼 0에서 1개의 삼각형을 만든다. 사각형을 그릴때: g_d3d_Device->DrawPrimitive( D3DPT_TRIANGLESTRIP, 3, 2 )와 같이 버텍스 버퍼 3에서 2개의 삼각형을 만든다. 오늘은 여기까지....