Nazara Engine  0.4
A fast, complete, cross-platform API designed for game development
DepthRenderQueue.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_DEPTHRENDERQUEUE_HPP
8 #define NAZARA_DEPTHRENDERQUEUE_HPP
9 
10 #include <Nazara/Prerequesites.hpp>
11 #include <Nazara/Graphics/ForwardRenderQueue.hpp>
12 #include <Nazara/Math/Box.hpp>
13 #include <Nazara/Math/Matrix4.hpp>
14 
15 namespace Nz
16 {
17  class NAZARA_GRAPHICS_API DepthRenderQueue : public ForwardRenderQueue
18  {
19  public:
21  ~DepthRenderQueue() = default;
22 
23  void AddBillboards(int renderOrder, const Material* material, unsigned int count, SparsePtr<const Vector3f> positionPtr, SparsePtr<const Vector2f> sizePtr, SparsePtr<const Vector2f> sinCosPtr = nullptr, SparsePtr<const Color> colorPtr = nullptr) override;
24  void AddBillboards(int renderOrder, const Material* material, unsigned int count, SparsePtr<const Vector3f> positionPtr, SparsePtr<const Vector2f> sizePtr, SparsePtr<const Vector2f> sinCosPtr, SparsePtr<const float> alphaPtr) override;
25  void AddBillboards(int renderOrder, const Material* material, unsigned int count, SparsePtr<const Vector3f> positionPtr, SparsePtr<const Vector2f> sizePtr, SparsePtr<const float> anglePtr, SparsePtr<const Color> colorPtr = nullptr) override;
26  void AddBillboards(int renderOrder, const Material* material, unsigned int count, SparsePtr<const Vector3f> positionPtr, SparsePtr<const Vector2f> sizePtr, SparsePtr<const float> anglePtr, SparsePtr<const float> alphaPtr) override;
27  void AddBillboards(int renderOrder, const Material* material, unsigned int count, SparsePtr<const Vector3f> positionPtr, SparsePtr<const float> sizePtr, SparsePtr<const Vector2f> sinCosPtr = nullptr, SparsePtr<const Color> colorPtr = nullptr) override;
28  void AddBillboards(int renderOrder, const Material* material, unsigned int count, SparsePtr<const Vector3f> positionPtr, SparsePtr<const float> sizePtr, SparsePtr<const Vector2f> sinCosPtr, SparsePtr<const float> alphaPtr) override;
29  void AddBillboards(int renderOrder, const Material* material, unsigned int count, SparsePtr<const Vector3f> positionPtr, SparsePtr<const float> sizePtr, SparsePtr<const float> anglePtr, SparsePtr<const Color> colorPtr = nullptr) override;
30  void AddBillboards(int renderOrder, const Material* material, unsigned int count, SparsePtr<const Vector3f> positionPtr, SparsePtr<const float> sizePtr, SparsePtr<const float> anglePtr, SparsePtr<const float> alphaPtr) override;
31  void AddDirectionalLight(const DirectionalLight& light) override;
32  void AddMesh(int renderOrder, const Material* material, const MeshData& meshData, const Boxf& meshAABB, const Matrix4f& transformMatrix) override;
33  void AddPointLight(const PointLight& light) override;
34  void AddSpotLight(const SpotLight& light) override;
35  void AddSprites(int renderOrder, const Material* material, const VertexStruct_XYZ_Color_UV* vertices, std::size_t spriteCount, const Texture* overlay = nullptr) override;
36 
37  private:
38  inline bool IsMaterialSuitable(const Material* material) const;
39 
40  MaterialRef m_baseMaterial;
41  };
42 }
43 
44 #include <Nazara/Graphics/DepthRenderQueue.inl>
45 
46 #endif // NAZARA_DEPTHRENDERQUEUE_HPP
TODO: Inherit SoundEmitter from Node.
Definition: Algorithm.hpp:12
Graphics class that represents the rendering queue for depth rendering.
Definition: DepthRenderQueue.hpp:17
Core class that represents a pointer and the step between two elements.
Definition: SparsePtr.hpp:19
Graphics class that represents a material.
Definition: Material.hpp:51
Graphics class that represents the rendering queue for forward rendering.
Definition: ForwardRenderQueue.hpp:26