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 >