diff options
author | Eugene Sandulenko | 2016-12-26 16:14:27 +0100 |
---|---|---|
committer | GitHub | 2016-12-26 16:14:27 +0100 |
commit | bdb3808d11ed6658999e383f23007305580b814c (patch) | |
tree | 4a9771249084ff0e53da367ce70d1333d712a8d3 /engines/wintermute/base | |
parent | f3e0c4d093f52d1728b65c078df88c2f482ec956 (diff) | |
parent | b7bd1991933526a6637e4ea0fd3f1305d0f6627a (diff) | |
download | scummvm-rg350-bdb3808d11ed6658999e383f23007305580b814c.tar.gz scummvm-rg350-bdb3808d11ed6658999e383f23007305580b814c.tar.bz2 scummvm-rg350-bdb3808d11ed6658999e383f23007305580b814c.zip |
Merge pull request #734 from tobiatesan/enable_bilinear
WINTERMUTE: Enable bilinear filtering in Wintermute
Diffstat (limited to 'engines/wintermute/base')
-rw-r--r-- | engines/wintermute/base/base_game.cpp | 6 | ||||
-rw-r--r-- | engines/wintermute/base/base_game.h | 3 | ||||
-rw-r--r-- | engines/wintermute/base/gfx/osystem/render_ticket.cpp | 15 |
3 files changed, 21 insertions, 3 deletions
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp index ef3cc2d84f..24779b9793 100644 --- a/engines/wintermute/base/base_game.cpp +++ b/engines/wintermute/base/base_game.cpp @@ -361,6 +361,12 @@ bool BaseGame::initConfManSettings() { _debugShowFPS = false; } + if (ConfMan.hasKey("bilinear_filtering")) { + _bilinearFiltering = ConfMan.getBool("bilinear_filtering"); + } else { + _bilinearFiltering = false; + } + if (ConfMan.hasKey("disable_smartcache")) { _smartCache = ConfMan.getBool("disable_smartcache"); } else { diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h index 6aacc1feab..46484cc5ca 100644 --- a/engines/wintermute/base/base_game.h +++ b/engines/wintermute/base/base_game.h @@ -101,7 +101,7 @@ public: virtual bool displayDebugInfo(); void setShowFPS(bool enabled) { _debugShowFPS = enabled; } - + bool getBilinearFiltering() { return _bilinearFiltering; } bool getSuspendedRendering() const { return _suspendedRendering; } TTextEncoding _textEncoding; @@ -279,6 +279,7 @@ protected: VideoTheoraPlayer *_theoraPlayer; private: bool _debugShowFPS; + bool _bilinearFiltering; void *_debugLogFile; void DEBUG_DebugDisable(); void DEBUG_DebugEnable(const char *filename = nullptr); diff --git a/engines/wintermute/base/gfx/osystem/render_ticket.cpp b/engines/wintermute/base/gfx/osystem/render_ticket.cpp index afe884300a..78d445ac8c 100644 --- a/engines/wintermute/base/gfx/osystem/render_ticket.cpp +++ b/engines/wintermute/base/gfx/osystem/render_ticket.cpp @@ -27,6 +27,7 @@ */ +#include "engines/wintermute/base/base_game.h" #include "engines/wintermute/base/gfx/osystem/render_ticket.h" #include "engines/wintermute/base/gfx/osystem/base_surface_osystem.h" #include "graphics/transform_tools.h" @@ -59,7 +60,12 @@ RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *s // TransformTools.) if (_transform._angle != Graphics::kDefaultAngle) { Graphics::TransparentSurface src(*_surface, false); - Graphics::Surface *temp = src.rotoscale(transform); + Graphics::Surface *temp; + if (owner->_gameRef->getBilinearFiltering()) { + temp = src.rotoscale<Graphics::FILTER_BILINEAR>(transform); + } else { + temp = src.rotoscale<Graphics::FILTER_NEAREST>(transform); + } _surface->free(); delete _surface; _surface = temp; @@ -67,7 +73,12 @@ RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *s dstRect->height() != srcRect->height()) && _transform._numTimesX * _transform._numTimesY == 1) { Graphics::TransparentSurface src(*_surface, false); - Graphics::Surface *temp = src.scale(dstRect->width(), dstRect->height()); + Graphics::Surface *temp; + if (owner->_gameRef->getBilinearFiltering()) { + temp = src.scale<Graphics::FILTER_BILINEAR>(dstRect->width(), dstRect->height()); + } else { + temp = src.scale<Graphics::FILTER_NEAREST>(dstRect->width(), dstRect->height()); + } _surface->free(); delete _surface; _surface = temp; |