示例#1
0
文件: Engine.cpp 项目: IreNox/tiki2
	void Engine::Draw(UpdateArgs& args)
	{
		Scene* curScene = scene;

		if (isLoading)
		{
			curScene = loadingScene;
		}

		UInt32 i = 0;
		UInt32 c = TIKI_MAX(1, curScene->GetCameras()->Count());
		while (i < c)
		{
			DrawArgs drawArgs = DrawArgs(
				args.Time,
				DM_Geometry,
				(i < curScene->GetCameras()->Count() ? curScene->GetCameras()->Get(i) : 0),
				graphics,
				sprites,
				args,
				curScene->GetLighting()
			);

			graphics->Begin(drawArgs);
			sprites->Begin();

			UInt32 bi = 0;
			UInt32 bc = 1 + (useShadows ? 1 : 0);
			while (bi < bc)
			{
				if (bi != 0)
				{
					drawArgs.Mode = (DrawMode)bi;
					graphics->GetUnusedScreenTarget()->ApplyFirstAndOnly();
				}

				curScene->Draw(drawArgs);

				bi++;
			}

			sprites->End();
			graphics->End();

			i++;
		}
	}