5 # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
7 # ------------------------------------------------------------------------------
9 # This library is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU Lesser General Public
11 # License as published by the Free Software Foundation; either
12 # version 2.1 of the License, or (at your option) any later version.
14 # This library is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 # Lesser General Public License for more details.
19 # You should have received a copy of the GNU Lesser General Public
20 # License along with this library; if not, write to the Free Software
21 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 # ------------------------------------------------------------------------------
25 # Please feel free to send questions, suggestions or improvements to:
31 package SDL::Tutorial;
39 # change these values as necessary
40 my $title = 'My SDL App';
41 my ($width, $height, $depth) = ( 640, 480, 16 );
43 my $app = SDL::App->new(
50 # your code here; remove the next line
59 SDL::Tutorial - introduction to Perl SDL
63 # to read this tutorial
64 $ perldoc SDL::Tutorial
66 # to create a bare-bones SDL app based on this tutorial
67 $ perl -MSDL::Tutorial -e 1
71 SDL, the Simple DirectMedia Layer, is a cross-platform multimedia library.
72 These are the Perl 5 bindings. You can find out more about SDL at
73 L<http://www.libsdl.org/>.
75 Creating an SDL application with Perl is easy. You have to know a few basics,
76 though. Here's how to get up and running as quickly as possible.
80 All graphics in SDL live on a surface. You'll need at least one. That's what
83 Of course, before you can get a surface, you need to initialize your video
84 mode. SDL gives you several options, including whether to run in a window or
85 take over the full screen, the size of the window, the bit depth of your
86 colors, and whether to use hardware acceleration. For now, we'll build
87 something really simple.
91 SDL::App makes it easy to initialize video and create a surface. Here's how to
92 ask for a windowed surface with 640x480x16 resolution:
96 my $app = SDL::App->new(
102 You can get more creative, especially if you use the C<-title> and C<-icon>
103 attributes in a windowed application. Here's how to set the window title of
104 the application to C<My SDL Program>:
108 my $app = SDL::App->new(
112 -title => 'My SDL Program',
115 Setting an icon is a little more involved -- you have to load an image onto a
116 surface. That's a bit more complicated, but see the C<-name> parameter to
117 C<SDL::Surface->new()> if you want to skip ahead.
119 =head2 Working With The App
121 Since C<$app> from the code above is just an SDL surface with some extra sugar,
122 it behaves much like L<SDL::Surface>. In particular, the all-important C<blit>
123 and C<update> methods work. You'll need to create L<SDL::Rect> objects
124 representing sources of graphics to draw onto the C<$app>'s surface, C<blit>
125 them there, then C<update> the C<$app>.
127 B<Note:> "blitting" is copying a chunk of memory from one place to another.
129 That, however, is another tutorial.
135 =item L<SDL::Tutorial::Drawing>
137 basic drawing with rectangles
139 =item L<SDL::Tutorial::Animation>
141 basic rectangle animation
143 =item L<SDL::Tutorial::Images>
145 image loading and animation
151 chromatic, E<lt>chromatic@wgz.orgE<gt>.
153 Written for and maintained by the Perl SDL project, L<http://sdl.perl.org/>.
157 Copyright (c) 2003 - 2004, chromatic. All rights reserved. This module is
158 distributed under the same terms as Perl itself, in the hope that it is useful
159 but certainly under no guarantee.