Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Curioni <maxime.curioni@gmail.com>2008-09-25 22:02:15 +0400
committerMaxime Curioni <maxime.curioni@gmail.com>2008-09-25 22:02:15 +0400
commit920bb95aabf581e2cdf25568c77e276078c3689b (patch)
tree82e36fce6d0771e7ef6cfd41648ca3f5e6cfff95 /source/blender
parent4be21b18f83a7606fdb764caa537e42ec9aa72fc (diff)
soc-2008-mxcurioni: incorporated Tamito Kajiyama's patch, improving robustness for the Win32 build on older machines. In detail, the _blendEquation variable from AppCanvas is replaced by a _basic variable in Canvas, determing the rendering mode (standard with blending or basic). This latter variable is used to make sure that strokes are rendered in the right mode
Diffstat (limited to 'source/blender')
-rwxr-xr-xsource/blender/freestyle/intern/app_blender/AppCanvas.cpp15
-rwxr-xr-xsource/blender/freestyle/intern/app_blender/AppCanvas.h1
-rwxr-xr-xsource/blender/freestyle/intern/stroke/Canvas.cpp24
-rwxr-xr-xsource/blender/freestyle/intern/stroke/Canvas.h5
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);