diff --git a/include/Nazara/Graphics/Graphics.hpp b/include/Nazara/Graphics/Graphics.hpp index d1f988f04..954719f15 100644 --- a/include/Nazara/Graphics/Graphics.hpp +++ b/include/Nazara/Graphics/Graphics.hpp @@ -14,6 +14,7 @@ namespace Nz { + class AbstractBuffer; class RenderDevice; class NAZARA_GRAPHICS_API Graphics : public ModuleBase @@ -29,6 +30,7 @@ namespace Nz ~Graphics(); inline RenderDevice& GetRenderDevice(); + inline const std::shared_ptr& GetViewerDataUBO(); struct Config { @@ -36,6 +38,7 @@ namespace Nz }; private: + std::shared_ptr m_viewerDataUBO; std::shared_ptr m_renderDevice; static Graphics* s_instance; diff --git a/include/Nazara/Graphics/Graphics.inl b/include/Nazara/Graphics/Graphics.inl index ba9766953..35023cfc5 100644 --- a/include/Nazara/Graphics/Graphics.inl +++ b/include/Nazara/Graphics/Graphics.inl @@ -11,6 +11,11 @@ namespace Nz { return *m_renderDevice; } + + inline const std::shared_ptr& Graphics::GetViewerDataUBO() + { + return m_viewerDataUBO; + } } #include diff --git a/src/Nazara/Graphics/Graphics.cpp b/src/Nazara/Graphics/Graphics.cpp index 05d56f911..aa2deb383 100644 --- a/src/Nazara/Graphics/Graphics.cpp +++ b/src/Nazara/Graphics/Graphics.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -39,6 +40,12 @@ namespace Nz throw std::runtime_error("failed to instantiate render device"); MaterialPipeline::Initialize(); + + Nz::PredefinedViewerData viewerUboOffsets = Nz::PredefinedViewerData::GetOffsets(); + + m_viewerDataUBO = m_renderDevice->InstantiateBuffer(Nz::BufferType_Uniform); + if (!m_viewerDataUBO->Initialize(viewerUboOffsets.totalSize, Nz::BufferUsage_DeviceLocal | Nz::BufferUsage_Dynamic)) + throw std::runtime_error("failed to initialize viewer data UBO"); } Graphics::~Graphics()