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