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
Exemplo n.º 2
0
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++;
	}
}