// Copyright (C) 2015 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_RENDERTARGET_HPP #define NAZARA_RENDERTARGET_HPP #include #include #include #include #include class NzRenderer; class NAZARA_API NzRenderTarget : public NzListenable { friend class NzRenderer; public: NzRenderTarget() = default; virtual ~NzRenderTarget(); virtual unsigned int GetHeight() const = 0; virtual NzRenderTargetParameters GetParameters() const = 0; virtual unsigned int GetWidth() const = 0; bool IsActive() const; virtual bool IsRenderable() const = 0; bool SetActive(bool active); // Fonctions OpenGL virtual bool HasContext() const = 0; class NAZARA_API Listener { public: Listener() = default; virtual ~Listener(); virtual bool OnRenderTargetParametersChange(const NzRenderTarget* renderTarget, void* userdata); virtual void OnRenderTargetReleased(const NzRenderTarget* renderTarget, void* userdata); virtual bool OnRenderTargetSizeChange(const NzRenderTarget* renderTarget, void* userdata); }; protected: virtual bool Activate() const = 0; virtual void Desactivate() const; virtual void EnsureTargetUpdated() const = 0; }; #endif // NAZARA_RENDERTARGET_HPP