############################################################################## SDL::App::FPS - base/parent class for frame rate centric SDL/OpenGL apps This base class can be easy subclassed for your own projects. It is a basic building block for building SDL/OpenGL applications that need a fast framerate with event handling before each frame. In examples/, there are quite a few examples, including a Mandelbrot Fractal drawing program for your perusal. Features ======== * Easy config file reading and command line parsing. * Both SDL and OpenGL support. * Framerate monitoring, so you can adjust the scene complexity in real-time * Capping the framerate, even with the inaccurate timer delays * event handling in between frames (very fast response to user action) which means you don't need locking since events always occur at definite times * Decoupling of the animaition speed from the framerate by using an extra clock (meaning the animation has the same speed, independed from the current frame rate) * Time warp of the clock (see above): the clock can be warped by a factor, which can even be changed on a frame-by-frame basis. This allows effects like slow motion or fast forward, complete with ramping (e.g. slowly slowing down). The clock can even go backwards! * Has timers that are syncronized with the warped clock and only expire at the start of each frame (and not in-mid frame). Their overshot value still allows you to determine the exact time the timer should have fired, so you can correct for this. * Of course, for really real-time events (like starting the next musik track) you can still use the normal SDL timers. * Buttons: Mouse sensitive areas of rectangular, circular or elliptic shape that react to mouse clicks, mouse going in or out or hovering over the area * Convenience methods for setting up event handlers for often used events and for accessing often used colors (SDL::App::FPS::Color) This setup allows you to get away without any locking or worry about the simulation code removing and object that is currently drawn or something along these lines. Check out the examples, they show you how simple it is to use this framework! Installation ============ * You need at least SDL for Perl and SDL itself from . * Warning! v0.18 needs at least SDL_perl v1.20.2 which is not an official release (but a fork by me) and can be found at: http://bloodgate.com/perl/sdl/sdl_perl.html SDL_perl 2.0 beta2 (current as I write this) does _not_ work! * untar/ungzip the package (replace 0.18 with the version you got) tar -xzf SDL-App-FPS-0.18.tar.gz * Check the signature. Download my key from http://bloodgate.com/tels.asc or from my CPAN directory. Then do in the build directory (where you unwrapped stuff): cpansign -v * if the signature verifies OK, proceed. Otherwise NOTIFY ME IMMIDIATELY. Do NOT INSTALL THE PACKAGE! Your system might get compromised! * Build the make file: perl Makefile.PL * Make the project make * Run the tests: make test * If some tests fail, please notify me. * If all tests pass, install as root: su [enter password] make install exit Go to the example/ directory and run the example applications for fun. Enjoy! Usage ===== Look at the files in t/ (MyFPS.pm and myfpm.t) and the examples for how to use it. Read the documentation with perldoc SDL::App::FPS after installing this package. Please send me test-reports, your experiences with this and your ideas - I love to hear about my work! Tels