Nazara Engine  0.4
A fast, complete, cross-platform API designed for game development
AbstractRenderTechnique.hpp
1 // Copyright (C) 2017 Jérôme Leclercq
2 // This file is part of the "Nazara Engine - Graphics module"
3 // For conditions of distribution and use, see copyright notice in Config.hpp
4 
5 #pragma once
6 
7 #ifndef NAZARA_ABSTRACTRENDERTECHNIQUE_HPP
8 #define NAZARA_ABSTRACTRENDERTECHNIQUE_HPP
9 
10 #include <Nazara/Prerequesites.hpp>
11 #include <Nazara/Core/String.hpp>
12 #include <Nazara/Graphics/Config.hpp>
13 #include <Nazara/Graphics/Enums.hpp>
14 
15 namespace Nz
16 {
17  class AbstractRenderQueue;
18  struct SceneData;
19 
20  class NAZARA_GRAPHICS_API AbstractRenderTechnique
21  {
22  public:
26  virtual ~AbstractRenderTechnique();
27 
28  virtual void Clear(const SceneData& sceneData) const = 0;
29  virtual bool Draw(const SceneData& sceneData) const = 0;
30 
31  virtual void EnableInstancing(bool instancing);
32 
33  virtual String GetName() const;
34  virtual AbstractRenderQueue* GetRenderQueue() = 0;
35  virtual RenderTechniqueType GetType() const = 0;
36 
37  virtual bool IsInstancingEnabled() const;
38 
39  AbstractRenderTechnique& operator=(const AbstractRenderTechnique&) = delete;
40  AbstractRenderTechnique& operator=(AbstractRenderTechnique&&) = default;
41 
42  protected:
43  bool m_instancingEnabled;
44  };
45 }
46 
47 #endif // NAZARA_ABSTRACTRENDERTECHNIQUE_HPP
TODO: Inherit SoundEmitter from Node.
Definition: Algorithm.hpp:12
Core class that represents a string.
Definition: String.hpp:22
Graphics class that represents the rendering queue for our scene.
Definition: AbstractRenderQueue.hpp:26
Graphics class that represents the rendering technique for our scene.
Definition: AbstractRenderTechnique.hpp:20