#include "texture.h"
#include "uniformblock.h"
#include "vertexsetup.h"
-#include "windingtest.h"
using namespace std;
PipelineState::PipelineState():
shprog(0),
vertex_setup(0),
- winding_test(0),
+ front_face(COUNTERCLOCKWISE),
+ face_cull(NO_CULL),
enabled_clip_planes(0),
changes(0)
{
}
}
-void PipelineState::set_winding_test(const WindingTest *w)
+void PipelineState::set_front_face(FaceWinding w)
{
- if(w!=winding_test)
+ if(w!=front_face)
{
- winding_test = w;
- changes |= WINDING_TEST;
+ front_face = w;
+ changes |= FACE_CULL;
+ }
+}
+
+void PipelineState::set_face_cull(CullMode c)
+{
+ if(c!=face_cull)
+ {
+ face_cull = c;
+ changes |= FACE_CULL;
}
}
vertex_setup->refresh();
}
- if(mask&WINDING_TEST)
+ if(mask&FACE_CULL)
{
- if(winding_test)
+ glFrontFace(front_face==CLOCKWISE ? GL_CW : GL_CCW);
+
+ if(face_cull!=NO_CULL)
{
glEnable(GL_CULL_FACE);
- glFrontFace(winding_test->get_winding());
+ glCullFace(face_cull==CULL_FRONT ? GL_FRONT : GL_BACK);
}
else
glDisable(GL_CULL_FACE);