示例#1
0
//-----------------------------------------------------------------------------------------------------------------------------------
void ScreenManager::Draw()
{
	// Draw the background
	m_spriteBatch->Begin(SpriteSortMode_Immediate, m_states->NonPremultiplied());

	m_activeScreens.back()->DrawBackground(m_spriteBatch.get(), m_spriteFont.get());

	m_spriteBatch->End();

	// Draw the camera dependent game objects
	m_spriteBatch->Begin(SpriteSortMode_Immediate, m_states->NonPremultiplied(), nullptr, nullptr, nullptr, nullptr, m_camera.GetViewMatrix());

	for (BaseScreen* screen : m_activeScreens)
	{
		screen->DrawInGameObjects(m_spriteBatch.get(), m_spriteFont.get());
	}

	m_spriteBatch->End();

	// Draw the screen (camera independent) objects
	m_spriteBatch->Begin(SpriteSortMode_Immediate, m_states->NonPremultiplied());

	for (BaseScreen* screen : m_activeScreens)
	{
		screen->DrawScreenObjects(m_spriteBatch.get(), m_spriteFont.get());
	}

	// Draw the game mouse - camera independent
	m_gameMouse.Draw(m_spriteBatch.get(), m_spriteFont.get());

	m_spriteBatch->End();
}