Renderer: RenderWindow now requires a RenderDevice

This commit is contained in:
Lynix
2021-05-16 23:13:00 +02:00
parent 40772f2137
commit 13feaf4aab
30 changed files with 132 additions and 107 deletions

View File

@@ -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 &parameters = 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 &parameters = 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 &parameters = 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;
};

View File

@@ -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();

View File

@@ -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;
};
}

View File

@@ -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;

View File

@@ -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;
};