const Tag Renderer::world_obj_matrix_tag("world_obj_matrix");
const Tag Renderer::world_obj_normal_matrix_tag("world_obj_normal_matrix");
-Renderer::Renderer():
- placeholder_texture(Resources::get_global().get<Texture>("_placeholder.png")),
- default_sampler(Resources::get_global().get<Sampler>("_linear_clamp.samp"))
+Renderer::Renderer()
{
state_stack.reserve(16);
shdata_stack.reserve(32);
if(ResourceManager *res_mgr = tex->get_manager())
res_mgr->resource_used(*tex);
if(!tex->is_loaded())
- tex = &placeholder_texture;
+ {
+ if(!placeholder_texture)
+ placeholder_texture = &Resources::get_global().get<Texture>("_placeholder.png");
+ tex = placeholder_texture;
+ }
if(!samp)
- samp = &default_sampler;
+ {
+ if(!default_sampler)
+ default_sampler = &Resources::get_global().get<Sampler>("_linear_clamp.samp");
+ samp = default_sampler;
+ }
}
else
samp = 0;
std::vector<BoundProgramData> shdata_stack;
std::vector<BoundResource<const Buffer *>> buffer_stack;
std::vector<BoundResource<SampledTexture>> texture_stack;
- const Texture &placeholder_texture;
- const Sampler &default_sampler;
+ const Texture *placeholder_texture = 0;
+ const Sampler *default_sampler = 0;
PipelineState *last_pipeline = 0;
Commands commands;