Added new RenderTechnique system

Former-commit-id: 6d65a4537232bc705333c696f2478d47f16e074a
This commit is contained in:
Lynix
2013-10-09 10:11:47 +02:00
parent 6e20e7095b
commit 0f382fd1ad
8 changed files with 57 additions and 8 deletions

View File

@@ -9,7 +9,9 @@
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/NonCopyable.hpp>
#include <Nazara/Core/String.hpp>
#include <Nazara/Graphics/AbstractRenderQueue.hpp>
#include <Nazara/Graphics/Enums.hpp>
class NzBackground;
class NzScene;
@@ -21,11 +23,13 @@ class NAZARA_API NzAbstractRenderTechnique : NzNonCopyable
virtual ~NzAbstractRenderTechnique();
virtual void Clear(const NzScene* scene) = 0;
virtual void Draw(const NzScene* scene) = 0;
virtual bool Draw(const NzScene* scene) = 0;
virtual void EnableInstancing(bool instancing);
virtual NzString GetName() const;
virtual NzAbstractRenderQueue* GetRenderQueue() = 0;
virtual nzRenderTechniqueType GetType() const = 0;
virtual bool IsInstancingEnabled() const;

View File

@@ -26,6 +26,17 @@ enum nzLightType
nzLightType_Max = nzLightType_Spot
};
enum nzRenderTechniqueType
{
nzRenderTechniqueType_AdvancedForward, // NzAdvancedForwardRenderTechnique
nzRenderTechniqueType_BasicForward, // NzBasicForwardRenderTechnique
nzRenderTechniqueType_DeferredShading, // NzDeferredRenderTechnique
nzRenderTechniqueType_LightPrePass, // NzLightPrePassRenderTechnique
nzRenderTechniqueType_User,
nzRenderTechniqueType_Max = nzRenderTechniqueType_User
};
enum nzSceneNodeType
{
nzSceneNodeType_Light, // NzLight

View File

@@ -21,10 +21,11 @@ class NAZARA_API NzForwardRenderTechnique : public NzAbstractRenderTechnique
~NzForwardRenderTechnique();
void Clear(const NzScene* scene);
void Draw(const NzScene* scene);
bool Draw(const NzScene* scene);
unsigned int GetMaxLightsPerObject() const;
NzAbstractRenderQueue* GetRenderQueue() override;
nzRenderTechniqueType GetType() const override;
void SetMaxLightsPerObject(unsigned int lightCount);