[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Lousy FPS



On 9/12/06, Kris Schnee <kschnee@xxxxxxxxxx> wrote:
So I tested the isometric version. 6 FPS, even with the logo and
interface turned off. Not good. How can my pasting tiles on a 2D surface
be slower than calling an OpenGL list of lists of 3D cube-drawing
instructions?

How can OpenGL textured poly rendering be faster than software? well...

Parallelism between CPU and GPU (they can execute things at the same
time), parallelism between the cpu memory bus and the video card
memory bus (the video card adds a bunch of extra memory that can read
and write while your cpu is calculating things), saving the time of
copying the software surface to the video card and locks both buses
(the video card can shove memory from it's texture buffers to back
buffers straight to the display buffer all using it's caches and high
speed buses, while the mem copy would have to use the much slower AGP
or (god forbid) PCI buses) and the many many benefits of a dedicated
HW design vs. a general purpose one (most of which are a form of
parallelism on the video card itself, like having dedicated z-buffer
mem channels to get z-buffer at no additional cost, being able to do
multiple texture lookups at once over a range of pixels, being able to
do complex texture interpolation in a single op, being able to
interleave the screen buffer memory into multiple channels so that it
can render multiple zones all at once)

... so lots of reasons... honestly, I'm really just suprised you are
only getting 12 fps for what's drawn on the opengl screenshot,
especially if you are using display lists and already have all your
textures loaded... (mobo with integrated gfx in the chipset?)

--
For that that whole SDL version screenshot, if you are redrawing every
frame as a bunch of overlapping rectangular tiles with alpha blending
and no RLE... well than 6 fps seems about right for an older comp I
think

You may have dramatically different results based on RLE and HW_ACCEL
flags for your surfaces and bit depth conversion issues, but In my
experience you usually can't get an app that is redrawing a full
800x600 screen with significant overdraw to ever go fast with SW
rendering...

...now if your software thing were blitting those tiles to a flattened
scrolling buffer (saving you a lot of alpha blending of rects with a
larger area than the tile and eliminating most of the overdraw) I
would expect you could get more like 12fps or so (i.e. you could do a
scrolling game at a decent rate)

So what's the details on the SW guy?

---
(PS. Aesthetically, I like the isometric i.e. no perspective transform
look a lot better... you can tell openGL to do that, if you want)