Renderer: RenderWindow now requires a RenderDevice
This commit is contained in:
@@ -31,7 +31,7 @@ namespace Nz
|
||||
Graphics(Config config);
|
||||
~Graphics();
|
||||
|
||||
inline RenderDevice& GetRenderDevice();
|
||||
inline const std::shared_ptr<RenderDevice>& GetRenderDevice() const;
|
||||
inline TextureSamplerCache& GetSamplerCache();
|
||||
inline const std::shared_ptr<AbstractBuffer>& GetViewerDataUBO();
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline RenderDevice& Graphics::GetRenderDevice()
|
||||
inline const std::shared_ptr<RenderDevice>& Graphics::GetRenderDevice() const
|
||||
{
|
||||
return *m_renderDevice;
|
||||
return m_renderDevice;
|
||||
}
|
||||
|
||||
inline TextureSamplerCache& Graphics::GetSamplerCache()
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace Nz
|
||||
});
|
||||
}
|
||||
|
||||
m_pipelineLayout = Graphics::Instance()->GetRenderDevice().InstantiateRenderPipelineLayout(std::move(info));
|
||||
m_pipelineLayout = Graphics::Instance()->GetRenderDevice()->InstantiateRenderPipelineLayout(std::move(info));
|
||||
}
|
||||
|
||||
inline auto MaterialSettings::GetBuilderData() const -> const Builder&
|
||||
|
||||
@@ -37,13 +37,10 @@ namespace Nz
|
||||
const OpenGLFramebuffer& GetFramebuffer() const override;
|
||||
const OpenGLRenderPass& GetRenderPass() const override;
|
||||
|
||||
std::shared_ptr<RenderDevice> GetRenderDevice() override;
|
||||
|
||||
void Present();
|
||||
|
||||
private:
|
||||
std::size_t m_currentFrame;
|
||||
std::shared_ptr<OpenGLDevice> m_device;
|
||||
std::vector<std::unique_ptr<OpenGLRenderImage>> m_renderImage;
|
||||
std::unique_ptr<GL::Context> m_context;
|
||||
OpenGLRenderPass m_renderPass;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Nz
|
||||
class NAZARA_OPENGLRENDERER_API OpenGLRenderer : public RendererImpl
|
||||
{
|
||||
public:
|
||||
OpenGLRenderer() = default;
|
||||
OpenGLRenderer();
|
||||
~OpenGLRenderer();
|
||||
|
||||
std::unique_ptr<RenderSurface> CreateRenderSurfaceImpl() override;
|
||||
@@ -30,7 +30,7 @@ namespace Nz
|
||||
RenderAPI QueryAPI() const override;
|
||||
std::string QueryAPIString() const override;
|
||||
UInt32 QueryAPIVersion() const override;
|
||||
std::vector<RenderDeviceInfo> QueryRenderDevices() const override;
|
||||
const std::vector<RenderDeviceInfo>& QueryRenderDevices() const override;
|
||||
|
||||
bool Prepare(const ParameterList& parameters) override;
|
||||
|
||||
@@ -39,6 +39,7 @@ namespace Nz
|
||||
|
||||
std::shared_ptr<OpenGLDevice> m_device;
|
||||
std::unique_ptr<GL::Loader> m_loader;
|
||||
std::vector<RenderDeviceInfo> m_deviceInfos;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -25,19 +25,19 @@ namespace Nz
|
||||
{
|
||||
public:
|
||||
inline RenderWindow();
|
||||
inline RenderWindow(VideoMode mode, const std::string& title, WindowStyleFlags style = WindowStyle_Default, const RenderWindowParameters& parameters = RenderWindowParameters());
|
||||
inline explicit RenderWindow(void* handle, const RenderWindowParameters ¶meters = RenderWindowParameters());
|
||||
inline RenderWindow(std::shared_ptr<RenderDevice> renderDevice, VideoMode mode, const std::string& title, WindowStyleFlags style = WindowStyle_Default, const RenderWindowParameters& parameters = RenderWindowParameters());
|
||||
inline RenderWindow(std::shared_ptr<RenderDevice> renderDevice, void* handle, const RenderWindowParameters& parameters = RenderWindowParameters());
|
||||
inline ~RenderWindow();
|
||||
|
||||
inline bool Create(VideoMode mode, const std::string& title, WindowStyleFlags style = WindowStyle_Default, const RenderWindowParameters& parameters = RenderWindowParameters());
|
||||
inline bool Create(void* handle, const RenderWindowParameters ¶meters = RenderWindowParameters());
|
||||
bool Create(std::shared_ptr<RenderDevice> renderDevice, VideoMode mode, const std::string& title, WindowStyleFlags style = WindowStyle_Default, const RenderWindowParameters& parameters = RenderWindowParameters());
|
||||
bool Create(std::shared_ptr<RenderDevice> renderDevice, void* handle, const RenderWindowParameters ¶meters = RenderWindowParameters());
|
||||
|
||||
void Display();
|
||||
|
||||
void EnableVerticalSync(bool enabled);
|
||||
|
||||
inline RenderWindowImpl* GetImpl();
|
||||
std::shared_ptr<RenderDevice> GetRenderDevice();
|
||||
inline const std::shared_ptr<RenderDevice>& GetRenderDevice() const;
|
||||
inline RenderSurface* GetSurface();
|
||||
|
||||
inline bool IsValid() const;
|
||||
@@ -53,9 +53,10 @@ namespace Nz
|
||||
void OnWindowResized() override;
|
||||
|
||||
private:
|
||||
std::shared_ptr<RenderDevice> m_renderDevice;
|
||||
std::unique_ptr<RenderSurface> m_surface;
|
||||
std::unique_ptr<RenderWindowImpl> m_impl;
|
||||
Clock m_clock;
|
||||
std::unique_ptr<RenderSurface> m_surface;
|
||||
RenderWindowParameters m_parameters;
|
||||
unsigned int m_framerateLimit;
|
||||
};
|
||||
|
||||
@@ -12,19 +12,19 @@ namespace Nz
|
||||
{
|
||||
}
|
||||
|
||||
inline RenderWindow::RenderWindow(VideoMode mode, const std::string& title, WindowStyleFlags style, const RenderWindowParameters& parameters) :
|
||||
inline RenderWindow::RenderWindow(std::shared_ptr<RenderDevice> renderDevice, VideoMode mode, const std::string& title, WindowStyleFlags style, const RenderWindowParameters& parameters) :
|
||||
RenderWindow()
|
||||
{
|
||||
ErrorFlags errFlags(ErrorFlag_ThrowException, true);
|
||||
|
||||
Create(mode, title, style, parameters);
|
||||
Create(std::move(renderDevice), mode, title, style, parameters);
|
||||
}
|
||||
|
||||
inline RenderWindow::RenderWindow(void* handle, const RenderWindowParameters& parameters)
|
||||
inline RenderWindow::RenderWindow(std::shared_ptr<RenderDevice> renderDevice, void* handle, const RenderWindowParameters& parameters)
|
||||
{
|
||||
ErrorFlags errFlags(ErrorFlag_ThrowException, true);
|
||||
|
||||
Create(handle, parameters);
|
||||
Create(std::move(renderDevice), handle, parameters);
|
||||
}
|
||||
|
||||
inline RenderWindow::~RenderWindow()
|
||||
@@ -32,25 +32,16 @@ namespace Nz
|
||||
Destroy();
|
||||
}
|
||||
|
||||
inline bool RenderWindow::Create(VideoMode mode, const std::string& title, WindowStyleFlags style, const RenderWindowParameters& parameters)
|
||||
{
|
||||
m_parameters = parameters;
|
||||
|
||||
return Window::Create(mode, title, style);
|
||||
}
|
||||
|
||||
inline bool RenderWindow::Create(void* handle, const RenderWindowParameters& parameters)
|
||||
{
|
||||
m_parameters = parameters;
|
||||
|
||||
return Window::Create(handle);
|
||||
}
|
||||
|
||||
inline RenderWindowImpl* RenderWindow::GetImpl()
|
||||
{
|
||||
return m_impl.get();
|
||||
}
|
||||
|
||||
inline const std::shared_ptr<RenderDevice>& RenderWindow::GetRenderDevice() const
|
||||
{
|
||||
return m_renderDevice;
|
||||
}
|
||||
|
||||
inline RenderSurface* RenderWindow::GetSurface()
|
||||
{
|
||||
return m_surface.get();
|
||||
|
||||
@@ -20,6 +20,7 @@ namespace Nz
|
||||
class CommandPool;
|
||||
class Framebuffer;
|
||||
class RendererImpl;
|
||||
class RenderDevice;
|
||||
class RenderPass;
|
||||
class RenderSurface;
|
||||
|
||||
@@ -35,7 +36,6 @@ namespace Nz
|
||||
virtual std::shared_ptr<CommandPool> CreateCommandPool(QueueType queueType) = 0;
|
||||
|
||||
virtual const Framebuffer& GetFramebuffer() const = 0;
|
||||
virtual std::shared_ptr<RenderDevice> GetRenderDevice() = 0;
|
||||
virtual const RenderPass& GetRenderPass() const = 0;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -34,6 +34,14 @@ namespace Nz
|
||||
|
||||
inline RendererImpl* GetRendererImpl();
|
||||
|
||||
std::shared_ptr<RenderDevice> InstanciateRenderDevice(std::size_t deviceIndex);
|
||||
|
||||
RenderAPI QueryAPI() const;
|
||||
std::string QueryAPIString() const;
|
||||
UInt32 QueryAPIVersion() const;
|
||||
|
||||
const std::vector<RenderDeviceInfo>& QueryRenderDevices() const;
|
||||
|
||||
struct Config
|
||||
{
|
||||
Nz::RenderAPI preferredAPI = Nz::RenderAPI::Unknown;
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace Nz
|
||||
virtual std::string QueryAPIString() const = 0;
|
||||
virtual UInt32 QueryAPIVersion() const = 0;
|
||||
|
||||
virtual std::vector<RenderDeviceInfo> QueryRenderDevices() const = 0;
|
||||
virtual const std::vector<RenderDeviceInfo>& QueryRenderDevices() const = 0;
|
||||
|
||||
virtual bool Prepare(const ParameterList& parameters) = 0;
|
||||
};
|
||||
|
||||
@@ -55,8 +55,6 @@ namespace Nz
|
||||
inline const VulkanRenderPass& GetRenderPass() const override;
|
||||
inline const Vk::Swapchain& GetSwapchain() const;
|
||||
|
||||
inline std::shared_ptr<RenderDevice> GetRenderDevice() override;
|
||||
|
||||
void Present(UInt32 imageIndex, VkSemaphore waitSemaphore = VK_NULL_HANDLE);
|
||||
|
||||
VkRenderWindow& operator=(const VkRenderWindow&) = delete;
|
||||
|
||||
@@ -36,11 +36,6 @@ namespace Nz
|
||||
{
|
||||
return m_swapchain;
|
||||
}
|
||||
|
||||
inline std::shared_ptr<RenderDevice> VkRenderWindow::GetRenderDevice()
|
||||
{
|
||||
return m_device;
|
||||
}
|
||||
}
|
||||
|
||||
#include <Nazara/VulkanRenderer/DebugOff.hpp>
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace Nz
|
||||
RenderAPI QueryAPI() const override;
|
||||
std::string QueryAPIString() const override;
|
||||
UInt32 QueryAPIVersion() const override;
|
||||
std::vector<RenderDeviceInfo> QueryRenderDevices() const override;
|
||||
const std::vector<RenderDeviceInfo>& QueryRenderDevices() const override;
|
||||
|
||||
bool Prepare(const ParameterList& parameters) override;
|
||||
|
||||
@@ -41,6 +41,7 @@ namespace Nz
|
||||
|
||||
private:
|
||||
std::list<Vk::Device> m_devices;
|
||||
std::vector<RenderDeviceInfo> m_deviceInfos;
|
||||
ParameterList m_initializationParameters;
|
||||
Vk::Instance m_instance;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user