diff options
author | Vicent Marti | 2008-07-25 00:59:53 +0000 |
---|---|---|
committer | Vicent Marti | 2008-07-25 00:59:53 +0000 |
commit | 49b4df308ff7beb771531598c074535241e547ca (patch) | |
tree | 6440655dcbc9977ca99947430310351b24e1d159 /graphics | |
parent | 7c562788968060e7fe764b9946384fa88cdd4de4 (diff) | |
download | scummvm-rg350-49b4df308ff7beb771531598c074535241e547ca.tar.gz scummvm-rg350-49b4df308ff7beb771531598c074535241e547ca.tar.bz2 scummvm-rg350-49b4df308ff7beb771531598c074535241e547ca.zip |
Fixed triangle drawing. A bit.
svn-id: r33268
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/VectorRenderer.cpp | 24 | ||||
-rw-r--r-- | graphics/VectorRenderer.h | 1 |
2 files changed, 16 insertions, 9 deletions
diff --git a/graphics/VectorRenderer.cpp b/graphics/VectorRenderer.cpp index 178f760751..6bbb84acaa 100644 --- a/graphics/VectorRenderer.cpp +++ b/graphics/VectorRenderer.cpp @@ -498,9 +498,9 @@ void VectorRendererSpec<PixelType, PixelFormat>:: drawTriangle(int x, int y, int w, int h, TriangleOrientation orient) { // Awesome hack: the AA messes up the last pixel triangles if their width is even // ...fix the width instead of fixing the AA :p - if (w % 2 == 0) { - w++; h++; - } + // if (w % 2 == 0) { + // w++; h++; + // } if (x + w > Base::_activeSurface->w || y + h > Base::_activeSurface->h) return; @@ -517,16 +517,22 @@ drawTriangle(int x, int y, int w, int h, TriangleOrientation orient) { return; color = _fgColor; } + + if (Base::_dynamicData != 0) + orient = (TriangleOrientation)Base::_dynamicData; + + int newW = w * 3 / 4; + if (newW % 2) newW++; switch(orient) { case kTriangleUp: case kTriangleDown: -#ifdef VECTOR_RENDERER_FAST_TRIANGLES - if (w == h) - drawTriangleFast(x, y, w, (orient == kTriangleDown), color, Base::_fillMode); - else -#endif - drawTriangleVertAlg(x, y, w, h, (orient == kTriangleDown), color, Base::_fillMode); +// #ifdef VECTOR_RENDERER_FAST_TRIANGLES + // if (w == h) + drawTriangleFast(x + (w / 2) - w * 3 / 8, y + w / 4, newW, (orient == kTriangleDown), color, Base::_fillMode); + // else +// #endif + // drawTriangleVertAlg(x, y, w, h, (orient == kTriangleDown), color, Base::_fillMode); break; case kTriangleLeft: diff --git a/graphics/VectorRenderer.h b/graphics/VectorRenderer.h index f659626bbf..88072da923 100644 --- a/graphics/VectorRenderer.h +++ b/graphics/VectorRenderer.h @@ -107,6 +107,7 @@ public: }; enum TriangleOrientation { + kTriangleAuto = 0, kTriangleUp, kTriangleDown, kTriangleLeft, |