Renderer: Add support for hardware buffers

This commit is contained in:
Lynix 2016-10-29 00:52:25 +02:00
parent b317c10f23
commit 8d06c57d0d
3 changed files with 20 additions and 0 deletions

View File

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

View File

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

View File

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