Nazara Engine  0.4
A fast, complete, cross-platform API designed for game development
RenderTechniques.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_RENDERTECHNIQUES_HPP
8 #define NAZARA_RENDERTECHNIQUES_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 AbstractRenderTechnique;
18 
19  class NAZARA_GRAPHICS_API RenderTechniques
20  {
21  public:
22  using RenderTechniqueFactory = AbstractRenderTechnique* (*)();
23 
24  RenderTechniques() = delete;
25  ~RenderTechniques() = delete;
26 
27  static AbstractRenderTechnique* GetByEnum(RenderTechniqueType renderTechnique, int* techniqueRanking = nullptr);
28  static AbstractRenderTechnique* GetByIndex(unsigned int index, int* techniqueRanking = nullptr);
29  static AbstractRenderTechnique* GetByName(const String& name, int* techniqueRanking = nullptr);
30  static AbstractRenderTechnique* GetByRanking(int maxRanking, int* techniqueRanking = nullptr);
31 
32  static std::size_t GetCount();
33 
34  static void Register(const String& name, int ranking, RenderTechniqueFactory factory);
35 
36  static String ToString(RenderTechniqueType renderTechnique);
37 
38  static void Unregister(const String& name);
39  };
40 }
41 
42 #endif // NAZARA_RENDERTECHNIQUES_HPP
TODO: Inherit SoundEmitter from Node.
Definition: Algorithm.hpp:12
Graphics class that represents the techniques used in rendering.
Definition: RenderTechniques.hpp:19
Core class that represents a string.
Definition: String.hpp:22
Graphics class that represents the rendering technique for our scene.
Definition: AbstractRenderTechnique.hpp:20