Better handling of module initialization

Former-commit-id: 08d4b87a9b7cc10e672c23374306081fc9259de0
This commit is contained in:
Lynix 2013-07-31 14:17:48 +02:00
parent 48e5af6373
commit fc56553021
2 changed files with 15 additions and 10 deletions

View File

@ -492,7 +492,9 @@ bool NzRenderer::Initialize()
// Initialisation des dépendances
if (!NzUtility::Initialize())
{
NazaraError("Failed to initialize utility module");
NazaraError("Failed to initialize Utility module");
Uninitialize();
return false;
}
@ -500,11 +502,11 @@ bool NzRenderer::Initialize()
if (!NzOpenGL::Initialize())
{
NazaraError("Failed to initialize OpenGL");
Uninitialize();
return false;
}
NzContext::EnsureContext();
NzBuffer::SetBufferFunction(nzBufferStorage_Hardware, HardwareBufferFunction);
for (unsigned int i = 0; i <= nzMatrixType_Max; ++i)
@ -529,6 +531,8 @@ bool NzRenderer::Initialize()
s_capabilities[nzRendererCap_TextureMulti] = true; // Natif depuis OpenGL 1.3
s_capabilities[nzRendererCap_TextureNPOT] = true; // Natif depuis OpenGL 2.0
NzContext::EnsureContext();
if (s_capabilities[nzRendererCap_AnisotropicFilter])
{
GLfloat maxAnisotropy;
@ -635,8 +639,6 @@ bool NzRenderer::Initialize()
// Loaders
NzLoaders_Texture_Register();
NazaraNotice("Initialized: Renderer module");
return true;
}
@ -1169,8 +1171,6 @@ void NzRenderer::Uninitialize()
return;
}
NzContext::EnsureContext();
// Libération du module
s_moduleReferenceCounter = 0;

View File

@ -6,6 +6,7 @@
#include <Nazara/Renderer/TextureSampler.hpp>
#include <Nazara/Core/Error.hpp>
#include <Nazara/Renderer/Config.hpp>
#include <Nazara/Renderer/Context.hpp>
#include <Nazara/Renderer/Renderer.hpp>
#include <Nazara/Renderer/Texture.hpp>
#include <unordered_map>
@ -374,10 +375,14 @@ bool NzTextureSampler::Initialize()
void NzTextureSampler::Uninitialize()
{
for (const std::pair<nzUInt32, GLuint>& pair : s_samplers)
glDeleteSamplers(1, &pair.second);
if (!s_samplers.empty())
{
NzContext::EnsureContext();
for (const std::pair<nzUInt32, GLuint>& pair : s_samplers)
glDeleteSamplers(1, &pair.second);
s_samplers.clear();
s_samplers.clear();
}
}
nzUInt8 NzTextureSampler::s_defaultAnisotropyLevel = 1;