From 72daf0bf49c0ff994aeff357f6e52140887bce30 Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Tue, 17 Mar 2009 20:18:41 -0600 Subject: Added an image merge feature loosely based on a merge function found in the open source project Wormux. To improve SDL performance, the number of layers that are pushed out to the hardware or software buffers should be reduced, which is where this function comes into play, as it combines two surfaces together so that the number of blit operations is reduced. This function is currently not used, but will be used once a good way to link each of the target systems is determined so that it only initiates when SDL is enabled, as well as making sure that each hook that uses this function is benefiting from it sufficiently. At the moment, it's suspected that the particle engine will likely be the most likely to benefit from this function, followed by tile drawing, then sprite drawing. Signed-off-by: Ira Rice --- src/resources/image.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/resources/image.h') diff --git a/src/resources/image.h b/src/resources/image.h index 596917ce..f6b77f26 100644 --- a/src/resources/image.h +++ b/src/resources/image.h @@ -41,6 +41,7 @@ #include "resource.h" class Dye; +class Position; class SDL_Rect; class SDL_Surface; @@ -132,6 +133,15 @@ class Image : public Resource static void setLoadAsOpenGL(bool useOpenGL); #endif + /** + * Merges two image SDL_Surfaces together. This is for SDL use only, as + * reducing the number of surfaces that SDL has to render can cut down + * on the number of blit operations necessary, which in turn can help + * improve overall framerates. Don't use unless you are using it to + * reduce the number of overall layers that need to be drawn through SDL. + */ + Image* merge(Image* image, const Position& pos); + protected: /** * Constructor. -- cgit v1.2.3-70-g09d2