X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fwindingtest.cpp;h=0b8218adbf2773971b589c89cccefa134d403788;hp=401d68035af46703e8496b6eaff9e452026b8ae2;hb=3d8438922e24b787587d0c8f1883c5567a4af573;hpb=f14435e58bfa0fa697a06ba9a454bb30cd37d9d8 diff --git a/source/windingtest.cpp b/source/windingtest.cpp index 401d6803..0b8218ad 100644 --- a/source/windingtest.cpp +++ b/source/windingtest.cpp @@ -1,3 +1,4 @@ +#include #include "windingtest.h" namespace Msp { @@ -10,16 +11,14 @@ void operator>>(const LexicalConverter &conv, FaceWinding &winding) else if(conv.get()=="COUNTERCLOCKWISE") winding = COUNTERCLOCKWISE; else - throw InvalidParameterValue("Invalid FaceWinding"); + throw lexical_error(format("conversion of '%s' to FaceWinding", conv.get())); } WindingTest::WindingTest(): - test(false), winding(COUNTERCLOCKWISE) { } WindingTest::WindingTest(FaceWinding w): - test(true), winding(w) { } @@ -27,13 +26,8 @@ void WindingTest::bind() const { if(set_current(this)) { - if(test) - { - glEnable(GL_CULL_FACE); - glFrontFace(winding); - } - else - glDisable(GL_CULL_FACE); + glEnable(GL_CULL_FACE); + glFrontFace(winding); } } @@ -43,13 +37,21 @@ void WindingTest::unbind() glDisable(GL_CULL_FACE); } -WindingTest &WindingTest::clockwise() +const WindingTest &WindingTest::get_reverse() const +{ + if(winding==CLOCKWISE) + return counterclockwise(); + else + return clockwise(); +} + +const WindingTest &WindingTest::clockwise() { static WindingTest test(CLOCKWISE); return test; } -WindingTest &WindingTest::counterclockwise() +const WindingTest &WindingTest::counterclockwise() { static WindingTest test(COUNTERCLOCKWISE); return test;