namespace GL {
template<typename T>
-void PipelineState::set(T &target, T value, unsigned flag)
+void PipelineState::set(T &target, const T &value, unsigned flag)
{
if(value!=target)
{
set(framebuffer, f, FRAMEBUFFER);
}
-void PipelineState::set_viewport(const Rect *v)
+void PipelineState::set_viewport(const Rect &v)
{
set(viewport, v, VIEWPORT);
}
-void PipelineState::set_scissor(const Rect *s)
+void PipelineState::set_scissor(const Rect &s)
{
set(scissor, s, SCISSOR);
}
auto i = lower_bound_member(uniform_blocks, binding, &BoundUniformBlock::binding);
if(i==uniform_blocks.end() || i->binding!=binding)
i = uniform_blocks.insert(i, BoundUniformBlock(binding));
- i->used = block;
const Buffer *buffer = (block ? block->get_buffer() : 0);
if(block!=i->block || buffer!=i->buffer || binding<0)
{
i->block = block;
i->buffer = buffer;
i->changed = true;
+ i->used = block;
changes |= UNIFORMS;
}
}
auto i = lower_bound_member(textures, binding, &BoundTexture::binding);
if(i==textures.end() || i->binding!=binding)
i = textures.insert(i, BoundTexture(binding));
- i->used = (tex && samp);
if(tex!=i->texture || level!=i->level || samp!=i->sampler)
{
i->texture = tex;
i->sampler = samp;
i->level = level;
i->changed = true;
+ i->used = (tex && samp);
changes |= TEXTURES;
}
}
set(face_cull, c, FACE_CULL);
}
-void PipelineState::set_depth_test(const DepthTest *dt)
+void PipelineState::set_depth_test(const DepthTest &dt)
{
set(depth_test, dt, DEPTH_TEST);
}
-void PipelineState::set_stencil_test(const StencilTest *st)
+void PipelineState::set_stencil_test(const StencilTest &st)
{
set(stencil_test, st, STENCIL_TEST);
}
-void PipelineState::set_blend(const Blend *b)
+void PipelineState::set_blend(const Blend &b)
{
set(blend, b, BLEND);
}