diff options
4 files changed, 29 insertions, 16 deletions
diff --git a/source/blender/freestyle/intern/app_blender/AppCanvas.cpp b/source/blender/freestyle/intern/app_blender/AppCanvas.cpp index fb13e10de15..dd4075eccd0 100755 --- a/source/blender/freestyle/intern/app_blender/AppCanvas.cpp +++ b/source/blender/freestyle/intern/app_blender/AppCanvas.cpp @@ -46,7 +46,6 @@ AppCanvas::AppCanvas() :Canvas() { _pViewer = 0; - _blendEquation = true; _MapsPath = StringUtils::toAscii( Config::Path::getInstance()->getMapsDir() ).c_str(); } @@ -54,14 +53,12 @@ AppCanvas::AppCanvas(AppGLWidget* iViewer) :Canvas() { _pViewer = iViewer; - _blendEquation = true; } AppCanvas::AppCanvas(const AppCanvas& iBrother) :Canvas(iBrother) { _pViewer = iBrother._pViewer; - _blendEquation = iBrother._blendEquation; } AppCanvas::~AppCanvas() @@ -118,7 +115,7 @@ void AppCanvas::init() cout << "GLEW initialized" << endl; if(!glBlendEquation) { - _blendEquation = false; + _basic = true; cout << "glBlendEquation unavailable on this hardware -> switching to strokes basic rendering mode" << endl; } firsttime=false; @@ -227,7 +224,7 @@ void AppCanvas::update() void AppCanvas::Render(const StrokeRenderer *iRenderer) { - if(!_blendEquation){ + if(_basic){ RenderBasic(iRenderer); return; } @@ -359,9 +356,13 @@ void AppCanvas::RenderBasic(const StrokeRenderer *iRenderer) void AppCanvas::RenderStroke(Stroke *iStroke) { - iStroke->Render(_Renderer); + + if(_basic) + iStroke->RenderBasic(_Renderer); + else + iStroke->Render(_Renderer); + if(_pViewer->getRecordFlag()){ - //Sleep(1000); _pViewer->saveSnapshot(true); } } diff --git a/source/blender/freestyle/intern/app_blender/AppCanvas.h b/source/blender/freestyle/intern/app_blender/AppCanvas.h index 0eb1faa2549..c61c8044c10 100755 --- a/source/blender/freestyle/intern/app_blender/AppCanvas.h +++ b/source/blender/freestyle/intern/app_blender/AppCanvas.h @@ -8,7 +8,6 @@ class AppCanvas : public Canvas { private: mutable AppGLWidget *_pViewer; - bool _blendEquation; public: AppCanvas(); AppCanvas(AppGLWidget *iViewer); diff --git a/source/blender/freestyle/intern/stroke/Canvas.cpp b/source/blender/freestyle/intern/stroke/Canvas.cpp index ee8213609dd..acfbdc1fc26 100755 --- a/source/blender/freestyle/intern/stroke/Canvas.cpp +++ b/source/blender/freestyle/intern/stroke/Canvas.cpp @@ -59,6 +59,7 @@ Canvas::Canvas() _Renderer = 0; _current_sm = NULL; _steerableViewMap = new SteerableViewMap(NB_STEERABLE_VIEWMAP-1); + _basic = false; } Canvas::Canvas(const Canvas& iBrother) @@ -69,7 +70,7 @@ Canvas::Canvas(const Canvas& iBrother) _Renderer = iBrother._Renderer; _current_sm = iBrother._current_sm; _steerableViewMap = new SteerableViewMap(*(iBrother._steerableViewMap)); - + _basic = iBrother._basic; } Canvas::~Canvas() @@ -109,17 +110,28 @@ void Canvas::Draw() _current_sm = _StyleModules[i]; if (!_StyleModules[i]->getModified()) { - if (_StyleModules[i]->getDrawable() && _Layers[i]) - _Layers[i]->Render(_Renderer); - continue; + + if (_StyleModules[i]->getDrawable() && _Layers[i]) { + if (_basic) + _Layers[i]->RenderBasic(_Renderer); + else + _Layers[i]->Render(_Renderer); + } + continue; + + } if (i < _Layers.size() && _Layers[i]) delete _Layers[i]; _Layers[i] = _StyleModules[i]->execute(); - if (_StyleModules[i]->getDrawable() && _Layers[i]) - _Layers[i]->Render(_Renderer); + if (_StyleModules[i]->getDrawable() && _Layers[i]) { + if (_basic) + _Layers[i]->RenderBasic(_Renderer); + else + _Layers[i]->Render(_Renderer); + } timestamp->increment(); } diff --git a/source/blender/freestyle/intern/stroke/Canvas.h b/source/blender/freestyle/intern/stroke/Canvas.h index 4f57cd9c36c..4dd13950daf 100755 --- a/source/blender/freestyle/intern/stroke/Canvas.h +++ b/source/blender/freestyle/intern/stroke/Canvas.h @@ -82,7 +82,8 @@ protected: mapsMap _maps; static const char * _MapsPath; SteerableViewMap *_steerableViewMap; - + bool _basic; + public: /* Builds the Canvas */ Canvas(); @@ -184,7 +185,7 @@ public: void ReplaceStyleModule(unsigned index, StyleModule *iStyleModule); void setVisible(unsigned index, bool iVisible) ; //inline void setDensityMap(InformationMap<RGBImage>* iMap) {_DensityMap = iMap;} - inline void AddLayer(StrokeLayer *iLayer) {_Layers.push_back(iLayer);} + inline void AddLayer(StrokeLayer *iLayer) {_Layers.push_back(iLayer);} void resetModified(bool iMod=false); void causalStyleModules(std::vector<unsigned>& vec, unsigned index = 0); void setModified(unsigned index, bool b); |