The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

SDL::OpenGL::App - Glut like wrapper for SDL OpenGL apps

SYNOPSIS

 use SDL::OpenGL::App;
 
 my $app=new SDL::OpenGL::App;

 $app->app_name("Gears");

 $app->register_handler(init    => \&init,
			draw    => \&draw,
			events  => \&events,
			idle    => \&idle,
			reshape => \&reshape,
		       );
 
 
 $app->run();

DESCRIPTION

METHODS

new
add_startup_parameter
add_runtime_help
register_handler
pointer_show
run
pump
screendump

app_name
screen_width
screen_height
fullscreen
fps
glinfo

red_size
green_size
blue_size
depth_size
doublebufer

Package utility methods:

read_texture
rle_enc
rle_dec
=head1 EXAMPLES

QUICK DEMO/TEST

Running the in-built demo/test:

run perl with the 'e' flag to execute these one liners:

'use SDL::OpenGL::App; new SDL::OpenGL::App->run'

same, but in fullscreen mode:

'use SDL::OpenGL::App; $g=new SDL::OpenGL::App; $g->fullscreen(1); $g->run'

PUMPING

'Pumping' the SDL::OpenGL::App processing loop, step by step:

Make use of the 'pump' function, say, when called from a Gtk Idle loop for instance:

my $gl_app=new SDL::OpenGL::App ;

#register handlers/help as normal

my $stay_alive=1; while ($stay_alive) { my $gl_rc=$gl_app->pump(); #returns FALSE when 'reasons to leave' detected

 $stay_alive=0 unless $gl_rc;
}

MAKE A MOVIE!

  NOTE:: currently (as from V1.06) only RAW PPM files are generated, but
  then SDL::OpenGL::App can only read ASCII/RAW PPM file anyway, for now.

  To create a series of screenshots to build a movie, e.g. to build
  OpenGL looking graphics for a 'flatter' application(s) (game/web/etc..):


#do things as usual, then

my $frame=0;
my $frame_ext_format="%d"; #you may want leading 8 zeros hex, e.g, : "%08x"
sub idle 
  {
   
   #..do your 'Idle' stuff..
   
   $gl_app->screendump(FILE_NAME=>"movie/gear.".sprintf($frame_ext_format,$frame++));
  }

to playback the movie, one quick way is to use the 'animate' program from ImageMagick:

$ animate movie/gear.*

Furthermore, you could then use 'read_texture' to read them all/it back in, to be used as a (possibly animated) bill board, or drop OpenGL mode and then use them in 2D SDL Surfaces, you choose.

For more examples please have a look inside the directory: 'examples/openGL/Glut'

TODO

BUGS

AUTHOR

Wayne Keenan               wayne@metaverse.fsnet.co.uk

Copyright (c) 2000 Wayne Keenan. All rights reserved.
This program is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.

VERSION

Version 0.02     (05 Aug 2000)

SEE ALSO

perl(1) SDL::App SDL::OpenGL