OpenGLRenderer: Improve OpenGL wrapper

This commit is contained in:
Jérôme Leclercq
2021-09-21 16:34:34 +02:00
parent 250044b47a
commit 78358337f3
12 changed files with 57 additions and 18 deletions

View File

@@ -4,11 +4,19 @@
#include <Nazara/OpenGLRenderer/Wrapper/ContextObject.hpp>
#include <Nazara/Core/Error.hpp>
#include <Nazara/Core/ErrorFlags.hpp>
#include <Nazara/OpenGLRenderer/Utils.hpp>
#include <Nazara/OpenGLRenderer/Debug.hpp>
namespace Nz::GL
{
template<typename C, GLenum ObjectType, typename... CreateArgs>
ContextObject<C, ObjectType, CreateArgs...>::ContextObject(const Context& context, CreateArgs... args)
{
ErrorFlags errFlags(ErrorMode::ThrowException);
Create(context, args...);
}
template<typename C, GLenum ObjectType, typename... CreateArgs>
ContextObject<C, ObjectType, CreateArgs...>::~ContextObject()
{
@@ -46,6 +54,19 @@ namespace Nz::GL
}
}
template<typename C, GLenum ObjectType, typename... CreateArgs>
const Context& ContextObject<C, ObjectType, CreateArgs...>::EnsureContext() const
{
const Context* activeContext = Context::GetCurrentContext();
if (activeContext != m_context.Get())
{
if (!Context::SetCurrentContext(m_context.Get()))
throw std::runtime_error("failed to activate context");
}
return *m_context;
}
template<typename C, GLenum ObjectType, typename... CreateArgs>
bool ContextObject<C, ObjectType, CreateArgs...>::IsValid() const
{
@@ -72,17 +93,6 @@ namespace Nz::GL
if (m_context->glObjectLabel)
m_context->glObjectLabel(ObjectType, m_objectId, name.size(), name.data());
}
template<typename C, GLenum ObjectType, typename... CreateArgs>
void ContextObject<C, ObjectType, CreateArgs...>::EnsureContext()
{
const Context* activeContext = Context::GetCurrentContext();
if (activeContext != m_context.Get())
{
if (!Context::SetCurrentContext(m_context.Get()))
throw std::runtime_error("failed to activate context");
}
}
}
#include <Nazara/OpenGLRenderer/DebugOff.hpp>