Renderer: Add support for hardware buffers
This commit is contained in:
parent
b317c10f23
commit
8d06c57d0d
|
|
@ -11,9 +11,13 @@
|
|||
#include <Nazara/Core/DynLib.hpp>
|
||||
#include <Nazara/Renderer/Config.hpp>
|
||||
#include <Nazara/Renderer/RendererImpl.hpp>
|
||||
#include <Nazara/Utility/Enums.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class AbstractBuffer;
|
||||
class Buffer;
|
||||
|
||||
class NAZARA_RENDERER_API Renderer
|
||||
{
|
||||
public:
|
||||
|
|
@ -31,6 +35,8 @@ namespace Nz
|
|||
static void Uninitialize();
|
||||
|
||||
private:
|
||||
static AbstractBuffer* CreateHardwareBufferImpl(Buffer* parent, BufferType type);
|
||||
|
||||
static std::unique_ptr<RendererImpl> s_rendererImpl;
|
||||
static DynLib s_rendererLib;
|
||||
static ParameterList s_initializationParameters;
|
||||
|
|
|
|||
|
|
@ -13,10 +13,13 @@
|
|||
#include <Nazara/Renderer/Config.hpp>
|
||||
#include <Nazara/Renderer/Enums.hpp>
|
||||
#include <Nazara/Renderer/RenderDevice.hpp>
|
||||
#include <Nazara/Utility/Enums.hpp>
|
||||
#include <vector>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class AbstractBuffer;
|
||||
class Buffer;
|
||||
class RendererImpl;
|
||||
class RenderWindowImpl;
|
||||
|
||||
|
|
@ -28,6 +31,7 @@ namespace Nz
|
|||
RendererImpl() = default;
|
||||
virtual ~RendererImpl();
|
||||
|
||||
virtual std::unique_ptr<AbstractBuffer> CreateHardwareBufferImpl(Buffer* parent, BufferType type) = 0;
|
||||
virtual std::unique_ptr<RenderWindowImpl> CreateRenderWindowImpl() = 0;
|
||||
|
||||
virtual bool IsBetterThan(const RendererImpl* other) const = 0;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include <Nazara/Core/Directory.hpp>
|
||||
#include <Nazara/Core/DynLib.hpp>
|
||||
#include <Nazara/Core/Log.hpp>
|
||||
#include <Nazara/Utility/Buffer.hpp>
|
||||
#include <Nazara/Utility/Utility.hpp>
|
||||
#include <Nazara/Renderer/Debug.hpp>
|
||||
|
||||
|
|
@ -86,6 +87,8 @@ namespace Nz
|
|||
|
||||
NazaraDebug("Using " + s_rendererImpl->QueryAPIString() + " as renderer");
|
||||
|
||||
Buffer::SetBufferFactory(DataStorage_Hardware, CreateHardwareBufferImpl);
|
||||
|
||||
onExit.Reset();
|
||||
|
||||
NazaraNotice("Initialized: Renderer module");
|
||||
|
|
@ -106,6 +109,8 @@ namespace Nz
|
|||
s_moduleReferenceCounter = 0;
|
||||
|
||||
// Uninitialize module here
|
||||
Buffer::SetBufferFactory(DataStorage_Hardware, nullptr);
|
||||
|
||||
s_rendererImpl.reset();
|
||||
s_rendererLib.Unload();
|
||||
|
||||
|
|
@ -115,6 +120,11 @@ namespace Nz
|
|||
Utility::Uninitialize();
|
||||
}
|
||||
|
||||
AbstractBuffer* Renderer::CreateHardwareBufferImpl(Buffer * parent, BufferType type)
|
||||
{
|
||||
return s_rendererImpl->CreateHardwareBufferImpl(parent, type).release();
|
||||
}
|
||||
|
||||
std::unique_ptr<RendererImpl> Renderer::s_rendererImpl;
|
||||
DynLib Renderer::s_rendererLib;
|
||||
ParameterList Renderer::s_initializationParameters;
|
||||
|
|
|
|||
Loading…
Reference in New Issue