// Copyright (C) 2020 Jérôme Leclercq // This file is part of the "Nazara Engine - Renderer module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_RENDERFRAME_HPP #define NAZARA_RENDERFRAME_HPP #include #include #include #include #include namespace Nz { class CommandBuffer; class CommandBufferBuilder; class UploadPool; class NAZARA_RENDERER_API RenderFrame { public: inline explicit RenderFrame(); inline explicit RenderFrame(RenderImage* renderImage, bool framebufferInvalidation); RenderFrame(const RenderFrame&) = delete; RenderFrame(RenderFrame&&) = delete; ~RenderFrame() = default; void Execute(const std::function& callback, QueueTypeFlags queueTypeFlags); UploadPool& GetUploadPool(); inline bool IsFramebufferInvalidated() const; template void PushForRelease(T&& value); template void PushReleaseCallback(F&& releaseCallback); void Present(); void SubmitCommandBuffer(CommandBuffer* commandBuffer, QueueTypeFlags queueTypeFlags) ; inline explicit operator bool(); RenderFrame& operator=(const RenderFrame&) = delete; RenderFrame& operator=(RenderFrame&&) = delete; private: RenderImage* m_image; bool m_framebufferInvalidation; }; } #include #endif