예제 #1
0
void Display::Update(const uint32 diff)
{
    if (m_is2D)
        Setup3DMode();

    sAnimator->Update();
    sParticleEmitterMgr->Update();

    DrawModels();
    DrawBillboards();
}
bool NzForwardRenderTechnique::Draw(const NzScene* scene) const
{
	m_directionalLights.SetLights(&m_renderQueue.directionalLights[0], m_renderQueue.directionalLights.size());
	m_lights.SetLights(&m_renderQueue.lights[0], m_renderQueue.lights.size());
	m_renderQueue.Sort(scene->GetViewer());

	if (!m_renderQueue.opaqueModels.empty())
		DrawOpaqueModels(scene);

	if (!m_renderQueue.transparentModels.empty())
		DrawTransparentModels(scene);

	if (!m_renderQueue.basicSprites.empty())
		DrawBasicSprites(scene);

	if (!m_renderQueue.billboards.empty())
		DrawBillboards(scene);

	// Les autres drawables (Exemple: Terrain)
	for (const NzDrawable* drawable : m_renderQueue.otherDrawables)
		drawable->Draw();

	return true;
}