Program Listing for File Renderer.h¶
↰ Return to documentation for file (Source\Azura\RenderSystem\Inc\Generic\Renderer.h
)
#pragma once
#include "Constants.h"
#include "Containers/Vector.h"
#include "Drawable.h"
#include "GenericTypes.h"
#include "Core/RawStorageFormat.h"
#include "ComputePool.h"
namespace Azura {
class Window;
struct DrawablePoolCreateInfo;
constexpr U32 GLOBAL_INFLIGHT_FRAMES = 2;
class Renderer {
public:
Renderer(ApplicationInfo appInfo,
const DeviceRequirements& deviceRequirements,
ApplicationRequirements appRequirements,
const SwapChainRequirements& swapChainRequirements,
const DescriptorRequirements& descriptorRequirements,
Memory::Allocator& mainAllocator,
Memory::Allocator& drawAllocator,
Window& window);
virtual ~Renderer() = default;
Renderer(const Renderer& other) = delete;
Renderer(Renderer&& other) = delete;
Renderer& operator=(const Renderer& rhs) = delete;
Renderer& operator=(Renderer&& rhs) = delete;
virtual String GetRenderingAPI() const = 0;
virtual DrawablePool& CreateDrawablePool(const DrawablePoolCreateInfo& createInfo) = 0;
virtual ComputePool& CreateComputePool(const ComputePoolCreateInfo& createInfo) = 0;
virtual void Submit() = 0;
virtual void RenderFrame() = 0;
virtual void EnterRenderFrame();
virtual void ExitRenderFrame();
virtual void SnapshotFrame(const String& exportPath) const = 0;
virtual void BindRenderTarget(U32 renderTargetId, const TextureDesc& desc, const U8* buffer) = 0;
virtual void BindBufferTarget(U32 bufferTargetId, const U8* buffer) = 0;
protected:
const ApplicationInfo& GetApplicationInfo() const;
const DeviceRequirements& GetDeviceRequirements() const;
const ApplicationRequirements& GetApplicationRequirements() const;
const SwapChainRequirements& GetSwapchainRequirements() const;
U32 GetCurrentFrame() const;
void SetCurrentFrame(U32 frameIdx);
Containers::Vector<DescriptorSlot> m_descriptorSlots;
Containers::Vector<DescriptorTableEntry> m_descriptorSetTable;
DescriptorCount m_descriptorCount;
std::reference_wrapper<Memory::Allocator> m_mainAllocator;
std::reference_wrapper<Memory::Allocator> m_drawPoolAllocator;
std::reference_wrapper<Window> m_window;
private:
virtual void AddShader(const ShaderCreateInfo& info) = 0;
const ApplicationInfo m_applicationInfo;
const DeviceRequirements m_deviceRequirements;
const ApplicationRequirements m_appRequirements;
SwapChainRequirements m_swapChainRequirements;
U32 m_frameCount;
};
} // namespace Azura