void Renderer::Rect( float x1, float y1, float x2, float y2, DWORD Col ) { unsigned char* pCol = (unsigned char*)&Col; D3DXVECTOR4 FColour(pCol[2],pCol[1], pCol[0], pCol[3] ); PosColNormalUVVertex v[4]; v[0].Coord.x = x1; v[0].Coord.y = y1; v[0].Coord.z = 0.0f; // v[0].Diffuse = Col; v[0].FDiffuse = FColour; v[1].Coord.x = x2; v[1].Coord.y = y1; v[1].Coord.z = 0.0f; // v[1].Diffuse = Col; v[1].FDiffuse = FColour; v[2].Coord.x = x2; v[2].Coord.y = y2; v[2].Coord.z = 0.0f; // v[2].Diffuse = Col; v[2].FDiffuse = FColour; v[3].Coord.x = x1; v[3].Coord.y = y2; v[3].Coord.z = 0.0f; // v[3].Diffuse = Col; v[3].FDiffuse = FColour; m_pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, &v, sizeof(PosColNormalUVVertex)); } // Rect
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pScmdline, int iCmdshow) { InitWindows(800, 600, false); GFX m_GFX = GFX(m_hwnd); // Main Loop MSG msg_Message; while (Running) { m_GFX.ClearScene(FColour(1.0f, 0.0f, 0.0f, 1.0f)); m_GFX.Draw(); //Check for quit if(PeekMessage(&msg_Message,m_hwnd,0,0,PM_REMOVE)) { if(!IsDialogMessage(m_hwnd,&msg_Message)) { DispatchMessage(&msg_Message); } } } DestroyWindow(m_hwnd); return 0; }
void Renderer::DrawText( float x, float y, char* txt, DWORD Col ) { unsigned char* pCol = (unsigned char*)&Col; D3DXVECTOR4 FColour(pCol[2],pCol[1], pCol[0], pCol[3] ); // D3DXVECTOR4 FColour(1,1, 0, 1 ); SetTexture( m_pTextureFont ); DiffuseUVVertexShader* pShader = &DiffuseUVVertexShader::StaticType; CommitTransforms( pShader ); CommitTextureState(); m_pD3DDevice->SetVertexShader( pShader->GetVertexShader() ); m_pD3DDevice->SetVertexDeclaration( g_pPosColUVDeclaration ); x = ( x / g_viewport.Width ) * 2 - 1; y = ( y / g_viewport.Height ) * 2 -1; PosColNormalUVVertex v[4]; unsigned char ch; while (txt[0] != 0) { ch = txt[0]; if (ch < 32) ch = 32; ch = ch - 32; float sizeX = 9.0f / 256.0f; float sizeY = 16.0f / 256.0f; float cx = (((ch % 16) * 9.0f) / 256.0f) + 0.5f / 256.0f; float cy = (((ch / 16) * 16.0f) / 256.0f) + 0.5f / 256.0f; v[0].Coord.x = x; v[0].Coord.y = y; v[0].Coord.z = 0.0f; v[0].u = cx; v[0].v = cy; // v[0].Diffuse = Col; v[0].FDiffuse = FColour; v[1].Coord.x = x + 9.0f / (g_viewport.Width * 0.5f); v[1].Coord.y = y; v[1].Coord.z = 0.0f; v[1].u = cx + sizeX; v[1].v = cy; // v[1].Diffuse = Col; v[1].FDiffuse = FColour; v[2].Coord.x = x + 9.0f / (g_viewport.Width * 0.5f); v[2].Coord.y = y + 14.0f / (g_viewport.Height * 0.5f); v[2].Coord.z = 0.0f; v[2].u = cx + sizeX; v[2].v = cy + sizeY; // v[2].Diffuse = Col; v[2].FDiffuse = FColour; v[3].Coord.x = x; v[3].Coord.y = y + 14.0f / (g_viewport.Height * 0.5f); v[3].Coord.z = 0.0f; v[3].u = cx; v[3].v = cy + sizeY; // v[3].Diffuse = Col; v[3].FDiffuse = FColour; m_pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, &v, sizeof(PosColNormalUVVertex)); x += 9.0f / (g_viewport.Width * 0.5f); txt++; } }