]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/pipelinestate.cpp
Use default member initializers in Texture
[libs/gl.git] / source / core / pipelinestate.cpp
index 23a2ed6a96b9b61dfcabe7e044324da797773572..076eb333d29b127a0d08ef38ec158223fb957179 100644 (file)
@@ -37,24 +37,18 @@ void PipelineState::set_shader_program(const Program *p)
        set(shprog, p, SHPROG);
 }
 
-void PipelineState::set_vertex_setup(const VertexSetup *s)
-{
-       set(vertex_setup, s, VERTEX_SETUP);
-}
-
-void PipelineState::set_front_face(FaceWinding w)
-{
-       set(front_face, w, FACE_CULL);
-}
-
-void PipelineState::set_face_cull(CullMode c)
-{
-       set(face_cull, c, FACE_CULL);
-}
-
-void PipelineState::set_enabled_clip_planes(unsigned p)
+void PipelineState::set_uniform_block(int binding, const UniformBlock *block)
 {
-       set(enabled_clip_planes, p, CLIP_PLANES);
+       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;
+       if(block!=i->block || binding<0)
+       {
+               i->block = block;
+               i->changed = true;
+               changes |= UNIFORMS;
+       }
 }
 
 void PipelineState::set_texture(unsigned binding, const Texture *tex, const Sampler *samp)
@@ -65,6 +59,7 @@ void PipelineState::set_texture(unsigned binding, const Texture *tex, const Samp
        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 || samp!=i->sampler)
        {
                i->texture = tex;
@@ -74,17 +69,24 @@ void PipelineState::set_texture(unsigned binding, const Texture *tex, const Samp
        }
 }
 
-void PipelineState::set_uniform_block(int binding, const UniformBlock *block)
+void PipelineState::set_vertex_setup(const VertexSetup *s)
 {
-       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));
-       if(block!=i->block || binding<0)
-       {
-               i->block = block;
-               i->changed = true;
-               changes |= UNIFORMS;
-       }
+       set(vertex_setup, s, VERTEX_SETUP);
+}
+
+void PipelineState::set_primitive_type(PrimitiveType t)
+{
+       set(primitive_type, t, PRIMITIVE_TYPE);
+}
+
+void PipelineState::set_front_face(FaceWinding w)
+{
+       set(front_face, w, FACE_CULL);
+}
+
+void PipelineState::set_face_cull(CullMode c)
+{
+       set(face_cull, c, FACE_CULL);
 }
 
 void PipelineState::set_depth_test(const DepthTest *dt)
@@ -102,20 +104,5 @@ void PipelineState::set_blend(const Blend *b)
        set(blend, b, BLEND);
 }
 
-
-PipelineState::BoundTexture::BoundTexture(unsigned b):
-       binding(b),
-       changed(false),
-       texture(0),
-       sampler(0)
-{ }
-
-
-PipelineState::BoundUniformBlock::BoundUniformBlock(int b):
-       binding(b),
-       changed(false),
-       block(0)
-{ }
-
 } // namespace GL
 } // namespace Msp