That might work . . . : ) On Tue, Jul 12, 2011 at 6:58 PM, Brian Fisher <br...@hamsterrepublic.com>wrote:
> If the layering is something that is consistent from one moment to the > next, and you really have an overdraw of 3x, you can pre-combine and cache > the visible parts, which could potentially make it take 1/3rd the speed > (that's your goal, right?) > > > On Tue, Jul 12, 2011 at 6:26 PM, Brian Brown <bro...@gmail.com> wrote: > >> Yes, I'm only blitting the visible parts. It's the tile layering that >> causes 3x more blitting. (floor, carpet, and a possible wall for every >> tile.) >> Blitting the whole 300x300 map will take a very looooong time . . . >> >> . . . >> >> Okay so, will SDL 1.3 regular blitting be 3x faster? >> >> On Tue, Jul 12, 2011 at 11:52 AM, DR0ID <dr...@bluewin.ch> wrote: >> >>> ** >>> On 12.07.2011 20:12, Brian Brown wrote: >>> >>> Thanks guys, >>> I'm not using Pyopengl. (I found it a little too hard to use.) >>> Pygame and SDL are working perfectly for me-- except-- I need faster >>> blitting. That's all, I think. >>> I've designed my game's graphics to simply rely on the blitting of many >>> 60x60 24-bit surfaces. (Approximately 300 to 500 blits per frame on a >>> scrolling screen of 640x480 resolution. The game is tile based with an >>> overlapping 3D illusion. The floor is drawn first, the "mat" second, and the >>> characters and "blocks" sorted by distance from bottom of screen are last. >>> Should look fantastic when graphics are finished and when the fps is >>> higher.) >>> >>> If SDL 1.3 will blit basic 24-bit surfaces (with a single colorkey) 3x >>> faster I think my game will work quite nicely. >>> >>> * I am using convert(). >>> * I'm *not* using per-pixel-alpha. >>> * I even blit the freshly-loaded-surfaces onto a new surface to be sure >>> the surfaces haven't inherited any unnecessary data from the png file. (I >>> found this to significantly increase speed.) >>> * The whole screen is scrolling so I use pygame.display.flip(). >>> * I think I'm using 24-bit images. >>> * I need a high refresh rate for high speed chases with the local >>> wildlife . . . (bear, tigers, unicorns etc.) >>> * I'll have to try using surface.fill() instead of blitting . . . >>> * My program's code is already running at a nice speed. >>> >>> Sounds like a great idea to continue programming with pygame and then >>> later speed things up, but-- >>> >>> It's just a little harder to program with slow graphics --My personal >>> policy for low stress programming is to reward myself after every day of >>> hard work by playing the game, and it's not the most fun in slow motion. >>> >>> Is there a way to convert 24-bit pygame surfaces to 8 bit RLE just >>> to temporarily speed things up for testing? >>> Thanks for the great advice guys. >>> >>> On Tue, Jul 12, 2011 at 6:14 AM, René Dudfield <ren...@gmail.com> wrote: >>> >>>> On Tue, Jul 12, 2011 at 1:59 PM, Sean Wolfe <ether....@gmail.com>wrote: >>>> >>>>> Dude this was a really good answer. Rrrrrespect >>>>> >>>>> >>>>> Indeed, good answer. >>>> >>>> Also, are you using fast rendering techniques? >>>> >>>> - Using 8 bit RLE encoded surfaces for the low colour depth images >>>> - avoiding per pixel alpha surfaces. >>>> - using convert() appropriately (except not on those low colour >>>> surfaces). >>>> - using fill() to fill in colours instead of blit. >>>> - using LayeredDirty sprite group, and DirtySprite sprites to do >>>> dirty rectangle updates. >>>> - updating parts of the screen at the lowest refresh rate they >>>> need. eg, displaying fps, may only need be done once every 10 frames. >>>> - profiled your game ( to see which parts are slow.) >>>> http://pygame.org/wiki/Profiling >>>> >>>> >>>> >>>> SDL 1.3 is faster with opengl/direct3d surfaces. But it's _still not >>>> finished. >>>> >>>> >>>> cu. >>>> >>> >>> >>> >>> Hi >>> >>> Just a side note: If you have a scrolling world then blit only the >>> visible parts, that will give you a performance boost (not sure if you do >>> this already). >>> >>> ~DR0ID >>> >> >> >