]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/renderer.cpp
Use a placeholder texture when a texture has not been loaded yet
[libs/gl.git] / source / render / renderer.cpp
index d3124f0da334c7439e630266db0eef7c8c4654cf..4beb2da7eca300d13450806b65d2eb503cd71f8e 100644 (file)
@@ -10,6 +10,7 @@
 #include "renderable.h"
 #include "renderer.h"
 #include "resourcemanager.h"
+#include "resources.h"
 #include "sampler.h"
 #include "texture.h"
 #include "vertexarray.h"
@@ -20,7 +21,8 @@ using namespace std;
 namespace Msp {
 namespace GL {
 
-Renderer::Renderer()
+Renderer::Renderer():
+       placeholder_texture(Resources::get_global().get<Texture>("_placeholder.png"))
 {
        state_stack.reserve(16);
        shdata_stack.reserve(32);
@@ -148,8 +150,12 @@ void Renderer::set_texture(Tag tag, const Texture *tex, int level, const Sampler
        State &state = get_state();
 
        if(tex)
+       {
                if(ResourceManager *res_mgr = tex->get_manager())
                        res_mgr->resource_used(*tex);
+               if(!tex->is_loaded())
+                       tex = &placeholder_texture;
+       }
 
        if(texture_stack.size()>state.texture_count)
        {