-#ifndef PIPELINESTATE_H_
-#define PIPELINESTATE_H_
+#ifndef MSP_GL_PIPELINESTATE_H_
+#define MSP_GL_PIPELINESTATE_H_
#include <vector>
#include <msp/core/noncopyable.h>
class BufferBackedUniformBlock;
class DefaultUniformBlock;
class DepthTest;
+class Framebuffer;
class Program;
+class Rect;
class Sampler;
class StencilTest;
class Texture;
class UniformBlock;
class VertexSetup;
-class WindingTest;
class PipelineState: public NonCopyable
{
UNIFORMS = 32,
DEPTH_TEST = 64,
STENCIL_TEST = 128,
- BLEND = 256
+ BLEND = 256,
+ FRAMEBUFFER = 512,
+ VIEWPORT = 1024,
+ SCISSOR = 2048
};
+ const Framebuffer *framebuffer;
+ const Rect *viewport;
+ const Rect *scissor;
const Program *shprog;
const VertexSetup *vertex_setup;
FaceWinding front_face;
template<typename T>
void set(T &, T, unsigned);
public:
+ void set_framebuffer(const Framebuffer *);
+ void set_viewport(const Rect *);
+ void set_scissor(const Rect *);
void set_shader_program(const Program *);
void set_vertex_setup(const VertexSetup *);
void set_front_face(FaceWinding);