// Copyright (C) 2017 Jérôme Leclercq // This file is part of the "Nazara Engine - Graphics module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_RENDERSUBMESH_HPP #define NAZARA_RENDERSUBMESH_HPP #include #include #include #include #include namespace Nz { class AbstractBuffer; class RenderPipeline; class ShaderBinding; class VertexDeclaration; class RenderSpriteChain : public RenderElement { public: inline RenderSpriteChain(int renderLayer, std::shared_ptr renderPipeline, std::shared_ptr vertexDeclaration, std::size_t spriteCount, const void* spriteData, const ShaderBinding& materialBinding, const ShaderBinding& instanceBinding); ~RenderSpriteChain() = default; inline UInt64 ComputeSortingScore(const RenderQueueRegistry& registry) const override; inline const ShaderBinding& GetInstanceBinding() const; inline const ShaderBinding& GetMaterialBinding() const; inline const RenderPipeline* GetRenderPipeline() const; inline std::size_t GetSpriteCount() const; inline const void* GetSpriteData() const; inline const VertexDeclaration* GetVertexDeclaration() const; inline void Register(RenderQueueRegistry& registry) const override; private: std::shared_ptr m_renderPipeline; std::shared_ptr m_vertexDeclaration; std::size_t m_spriteCount; const void* m_spriteData; const ShaderBinding& m_instanceBinding; const ShaderBinding& m_materialBinding; int m_renderLayer; }; } #include #endif