Added backgrounds
Former-commit-id: e3959b04a124978c473bd6330047b5fd6ac27b19
This commit is contained in:
parent
ea75b8ece5
commit
ccea00b12e
|
|
@ -223,10 +223,6 @@ int main()
|
||||||
// On active la caméra (Qui s'occupera de préparer la fenêtre au rendu)
|
// On active la caméra (Qui s'occupera de préparer la fenêtre au rendu)
|
||||||
camera.Activate();
|
camera.Activate();
|
||||||
|
|
||||||
// On vide le buffer de couleur et de profondeur pour réinitialiser le rendu
|
|
||||||
// À l'avenir, ceci sera fait automatiquement par la scène via les backgrounds
|
|
||||||
NzRenderer::Clear(nzRendererClear_Color | nzRendererClear_Depth);
|
|
||||||
|
|
||||||
// On procède maintenant au rendu de la scène en elle-même, celui-ci se décompose en quatre étapes distinctes
|
// On procède maintenant au rendu de la scène en elle-même, celui-ci se décompose en quatre étapes distinctes
|
||||||
|
|
||||||
// Pour commencer, on mets à jour la scène, ceci appelle la méthode Update de tous les SceneNode enregistrés
|
// Pour commencer, on mets à jour la scène, ceci appelle la méthode Update de tous les SceneNode enregistrés
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
// Copyright (C) 2013 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine - 2D Module"
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_BACKGROUND_HPP
|
||||||
|
#define NAZARA_BACKGROUND_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/2D/Enums.hpp>
|
||||||
|
|
||||||
|
class NAZARA_API NzBackground
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NzBackground() = default;
|
||||||
|
~NzBackground();
|
||||||
|
|
||||||
|
virtual void Draw() const = 0;
|
||||||
|
|
||||||
|
virtual nzBackgroundType GetBackgroundType() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_BACKGROUND_HPP
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
// Copyright (C) 2013 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine - 2D Module"
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_COLORBACKGROUND_HPP
|
||||||
|
#define NAZARA_COLORBACKGROUND_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/2D/Background.hpp>
|
||||||
|
#include <Nazara/Core/Color.hpp>
|
||||||
|
|
||||||
|
class NAZARA_API NzColorBackground : public NzBackground
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NzColorBackground(const NzColor& color = NzColor::Black);
|
||||||
|
|
||||||
|
void Draw() const;
|
||||||
|
|
||||||
|
nzBackgroundType GetBackgroundType() const;
|
||||||
|
NzColor GetColor() const;
|
||||||
|
|
||||||
|
void SetColor(const NzColor& color);
|
||||||
|
|
||||||
|
private:
|
||||||
|
NzColor m_color;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_COLORBACKGROUND_HPP
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
// Copyright (C) 2013 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine - 2D module"
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_ENUMS_2D_HPP
|
||||||
|
#define NAZARA_ENUMS_2D_HPP
|
||||||
|
|
||||||
|
enum nzBackgroundType
|
||||||
|
{
|
||||||
|
nzBackgroundType_Color, // NzColorBackground
|
||||||
|
nzBackgroundType_Skybox, // NzSkyboxBackground
|
||||||
|
nzBackgroundType_Texture, // NzTextureBackground
|
||||||
|
nzBackgroundType_User,
|
||||||
|
|
||||||
|
nzBackgroundType_Max = nzBackgroundType_User
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_ENUMS_2D_HPP
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#define NAZARA_SCENE_HPP
|
#define NAZARA_SCENE_HPP
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/2D/Background.hpp>
|
||||||
#include <Nazara/Core/Color.hpp>
|
#include <Nazara/Core/Color.hpp>
|
||||||
#include <Nazara/Core/Updatable.hpp>
|
#include <Nazara/Core/Updatable.hpp>
|
||||||
#include <Nazara/Math/Frustum.hpp>
|
#include <Nazara/Math/Frustum.hpp>
|
||||||
|
|
@ -33,6 +34,7 @@ class NAZARA_API NzScene
|
||||||
void Cull();
|
void Cull();
|
||||||
void Draw();
|
void Draw();
|
||||||
|
|
||||||
|
NzBackground* GetBackground() const;
|
||||||
NzSceneNode& GetRoot() const;
|
NzSceneNode& GetRoot() const;
|
||||||
float GetUpdateTime() const;
|
float GetUpdateTime() const;
|
||||||
unsigned int GetUpdatePerSecond() const;
|
unsigned int GetUpdatePerSecond() const;
|
||||||
|
|
@ -40,6 +42,7 @@ class NAZARA_API NzScene
|
||||||
void RegisterForUpdate(NzUpdatable* object);
|
void RegisterForUpdate(NzUpdatable* object);
|
||||||
|
|
||||||
void SetAmbientColor(const NzColor& color);
|
void SetAmbientColor(const NzColor& color);
|
||||||
|
void SetBackground(NzBackground* background);
|
||||||
void SetUpdatePerSecond(unsigned int updatePerSecond);
|
void SetUpdatePerSecond(unsigned int updatePerSecond);
|
||||||
|
|
||||||
void UnregisterForUpdate(NzUpdatable* object);
|
void UnregisterForUpdate(NzUpdatable* object);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
// Copyright (C) 2013 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine - 2D Module"
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/2D/Background.hpp>
|
||||||
|
#include <Nazara/2D/Debug.hpp>
|
||||||
|
|
||||||
|
NzBackground::~NzBackground() = default;
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright (C) 2013 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine - 2D Module"
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/2D/ColorBackground.hpp>
|
||||||
|
#include <Nazara/Renderer/Renderer.hpp>
|
||||||
|
#include <Nazara/2D/Debug.hpp>
|
||||||
|
|
||||||
|
NzColorBackground::NzColorBackground(const NzColor& color) :
|
||||||
|
m_color(color)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzColorBackground::Draw() const
|
||||||
|
{
|
||||||
|
NzRenderer::SetClearColor(m_color);
|
||||||
|
NzRenderer::Clear(nzRendererClear_Color);
|
||||||
|
}
|
||||||
|
|
||||||
|
nzBackgroundType NzColorBackground::GetBackgroundType() const
|
||||||
|
{
|
||||||
|
return nzBackgroundType_Color;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzColor NzColorBackground::GetColor() const
|
||||||
|
{
|
||||||
|
return m_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzColorBackground::SetColor(const NzColor& color)
|
||||||
|
{
|
||||||
|
m_color = color;
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
#include <Nazara/3D/Scene.hpp>
|
#include <Nazara/3D/Scene.hpp>
|
||||||
|
#include <Nazara/2D/ColorBackground.hpp>
|
||||||
#include <Nazara/2D/Drawable.hpp>
|
#include <Nazara/2D/Drawable.hpp>
|
||||||
#include <Nazara/3D/Camera.hpp>
|
#include <Nazara/3D/Camera.hpp>
|
||||||
#include <Nazara/3D/Light.hpp>
|
#include <Nazara/3D/Light.hpp>
|
||||||
|
|
@ -19,6 +20,7 @@
|
||||||
#include <Nazara/Utility/SkeletalMesh.hpp>
|
#include <Nazara/Utility/SkeletalMesh.hpp>
|
||||||
#include <Nazara/Utility/StaticMesh.hpp>
|
#include <Nazara/Utility/StaticMesh.hpp>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <memory>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <Nazara/3D/Debug.hpp>
|
#include <Nazara/3D/Debug.hpp>
|
||||||
|
|
@ -45,6 +47,7 @@ struct NzSceneImpl
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<NzBackground> background;
|
||||||
std::vector<NzUpdatable*> updateList;
|
std::vector<NzUpdatable*> updateList;
|
||||||
std::vector<NzUpdatable*> visibleUpdateList;
|
std::vector<NzUpdatable*> visibleUpdateList;
|
||||||
std::vector<NzRenderer::InstancingData> instancingData;
|
std::vector<NzRenderer::InstancingData> instancingData;
|
||||||
|
|
@ -67,6 +70,8 @@ NzScene::NzScene()
|
||||||
|
|
||||||
if (NzRenderer::HasCapability(nzRendererCap_Instancing))
|
if (NzRenderer::HasCapability(nzRendererCap_Instancing))
|
||||||
m_impl->instancingData.resize(NAZARA_RENDERER_INSTANCING_MAX);
|
m_impl->instancingData.resize(NAZARA_RENDERER_INSTANCING_MAX);
|
||||||
|
|
||||||
|
SetBackground(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
NzScene::~NzScene()
|
NzScene::~NzScene()
|
||||||
|
|
@ -103,6 +108,9 @@ void NzScene::Draw()
|
||||||
{
|
{
|
||||||
NzRenderer::Clear(nzRendererClear_Depth);
|
NzRenderer::Clear(nzRendererClear_Depth);
|
||||||
|
|
||||||
|
if (m_impl->background)
|
||||||
|
m_impl->background->Draw();
|
||||||
|
|
||||||
LightComparator lightComparator;
|
LightComparator lightComparator;
|
||||||
|
|
||||||
// Pour les meshs squelettiques, on utilise un buffer commun
|
// Pour les meshs squelettiques, on utilise un buffer commun
|
||||||
|
|
@ -315,6 +323,11 @@ void NzScene::Draw()
|
||||||
drawable->Draw();
|
drawable->Draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NzBackground* NzScene::GetBackground() const
|
||||||
|
{
|
||||||
|
return m_impl->background.get();
|
||||||
|
}
|
||||||
|
|
||||||
NzSceneNode& NzScene::GetRoot() const
|
NzSceneNode& NzScene::GetRoot() const
|
||||||
{
|
{
|
||||||
return m_impl->root;
|
return m_impl->root;
|
||||||
|
|
@ -348,6 +361,14 @@ void NzScene::SetAmbientColor(const NzColor& color)
|
||||||
m_impl->ambientColor = color;
|
m_impl->ambientColor = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NzScene::SetBackground(NzBackground* background)
|
||||||
|
{
|
||||||
|
if (!background)
|
||||||
|
background = new NzColorBackground;
|
||||||
|
|
||||||
|
m_impl->background.reset(background);
|
||||||
|
}
|
||||||
|
|
||||||
void NzScene::SetUpdatePerSecond(unsigned int updatePerSecond)
|
void NzScene::SetUpdatePerSecond(unsigned int updatePerSecond)
|
||||||
{
|
{
|
||||||
m_impl->updatePerSecond = updatePerSecond;
|
m_impl->updatePerSecond = updatePerSecond;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue