diff options
author | johndoe123 | 2013-04-17 12:41:49 +0200 |
---|---|---|
committer | johndoe123 | 2013-04-17 12:41:49 +0200 |
commit | 0a0b2f397b95e6e219f2ac8c5b79bbe6300ef432 (patch) | |
tree | 4351e3a630eb9dc4e684d5147e1c1499fbf0e98e /engines/sword25/gfx/renderobject.h | |
parent | 6548104b96be211b1c93412a05802cc821b1d2e0 (diff) | |
download | scummvm-rg350-0a0b2f397b95e6e219f2ac8c5b79bbe6300ef432.tar.gz scummvm-rg350-0a0b2f397b95e6e219f2ac8c5b79bbe6300ef432.tar.bz2 scummvm-rg350-0a0b2f397b95e6e219f2ac8c5b79bbe6300ef432.zip |
SWORD25: Optimize graphics drawing code
Diffstat (limited to 'engines/sword25/gfx/renderobject.h')
-rw-r--r-- | engines/sword25/gfx/renderobject.h | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/engines/sword25/gfx/renderobject.h b/engines/sword25/gfx/renderobject.h index f963ccaeb3..a22893a69e 100644 --- a/engines/sword25/gfx/renderobject.h +++ b/engines/sword25/gfx/renderobject.h @@ -53,6 +53,8 @@ namespace Sword25 { class Kernel; class RenderObjectManager; +class RenderObjectQueue; +class RectangleList; class Bitmap; class Animation; class AnimationTemplate; @@ -218,7 +220,10 @@ public: Dieses kann entweder direkt geschehen oder durch den Aufruf von UpdateObjectState() an einem Vorfahren-Objekt.<br> Diese Methode darf nur von BS_RenderObjectManager aufgerufen werden. */ - bool render(); + bool render(RectangleList *updateRects, const Common::Array<int> &updateRectsMinZ); + + void collectRenderQueue(RenderObjectQueue *renderQueue); + /** @brief Bereitet das Objekt und alle seine Unterobjekte auf einen Rendervorgang vor. Hierbei werden alle Dirty-Rectangles berechnet und die Renderreihenfolge aktualisiert. @@ -230,7 +235,7 @@ public: @brief Löscht alle Kinderobjekte. */ void deleteAllChildren(); - + // Accessor-Methoden // ----------------- /** @@ -299,6 +304,9 @@ public: int getZ() const { return _z; } + + int getAbsoluteZ() const; + /** @brief Gibt die Breite des Objektes zurück. */ @@ -352,6 +360,15 @@ public: return _handle; } + // Get the RenderObjects current version + int getVersion() const { + return _version; + } + + bool isSolid() const { + return _isSolid; + } + // Persistenz-Methoden // ------------------- virtual bool persist(OutputPersistenceBlock &writer); @@ -388,6 +405,13 @@ protected: int _oldZ; bool _oldVisible; + static int _nextGlobalVersion; + + int _version; + + // This should be set to true if the RenderObject is NOT alpha-blended to optimize drawing + bool _isSolid; + /// Ein Pointer auf den BS_RenderObjektManager, der das Objekt verwaltet. RenderObjectManager *_managerPtr; @@ -402,7 +426,7 @@ protected: @return Gibt false zurück, falls das Rendern fehlgeschlagen ist. @remark */ - virtual bool doRender() = 0; // { return true; } + virtual bool doRender(RectangleList *updateRects) = 0; // { return true; } // RenderObject-Baum Variablen // --------------------------- |