Improved ShaderBuilder

Former-commit-id: 345b6389f3da460a6c4d6959a7fe808542f5f609
This commit is contained in:
Lynix 2013-03-14 16:01:46 +01:00
parent 677536c4b2
commit 73c1b9508b
1 changed files with 10 additions and 4 deletions

View File

@ -450,6 +450,7 @@ namespace
} }
shader->SetFlags(flags); shader->SetFlags(flags);
shader->SetPersistent(false, false);
return shader.release(); return shader.release();
} }
@ -462,11 +463,15 @@ const NzShader* NzShaderBuilder::Get(nzUInt32 flags)
{ {
// Alors nous créons le shader // Alors nous créons le shader
NzShader* shader = BuildShader(flags); NzShader* shader = BuildShader(flags);
if (!shader) ///TODO: Ajouter une erreur en mode Once if (!shader)
return s_shaders[0]; // Shader par défaut {
NazaraWarning("Failed to build shader (flags: 0x" + NzString::Number(flags, 16) + ", using default one...");
shader = s_shaders[0]; // Shader par défaut
}
s_shaders[flags] = shader; s_shaders[flags] = shader;
///TODO: emplace shader->AddResourceReference();
return shader; return shader;
} }
@ -484,6 +489,7 @@ bool NzShaderBuilder::Initialize()
} }
s_shaders[0] = shader; s_shaders[0] = shader;
shader->AddResourceReference();
return true; return true;
} }
@ -491,7 +497,7 @@ bool NzShaderBuilder::Initialize()
void NzShaderBuilder::Uninitialize() void NzShaderBuilder::Uninitialize()
{ {
for (auto it : s_shaders) for (auto it : s_shaders)
delete it.second; it.second->RemoveResourceReference();
s_shaders.clear(); s_shaders.clear();
} }