Commit | Line | Data |
8fde61e3 |
1 | package SDL::Tutorial; |
2 | |
3 | use Pod::ToDemo <<'END_HERE'; |
4 | use SDL::App; |
5 | |
6 | # change these values as necessary |
7 | my $title = 'My SDL App'; |
8 | my ($width, $height, $depth) = ( 640, 480, 16 ); |
9 | |
10 | my $app = SDL::App->new( |
11 | -width => $width, |
12 | -height => $height, |
13 | -depth => $depth, |
14 | -title => $title, |
15 | ); |
16 | |
17 | # your code here; remove the next line |
18 | sleep 2; |
19 | END_HERE |
20 | |
21 | 1; |
22 | |
23 | __END__ |
24 | |
25 | =head1 NAME |
26 | |
27 | SDL::Tutorial - introduction to Perl SDL |
28 | |
29 | =head1 SYNOPSIS |
30 | |
31 | # to read this tutorial |
32 | $ perldoc SDL::Tutorial |
33 | |
34 | # to create a bare-bones SDL app based on this tutorial |
35 | $ perl -MSDL::Tutorial=basic_app.pl -e 1 |
36 | |
37 | =head1 SDL BASICS |
38 | |
39 | SDL, the Simple DirectMedia Layer, is a cross-platform multimedia library. |
40 | These are the Perl 5 bindings. You can find out more about SDL at |
41 | L<http://www.libsdl.org/>. |
42 | |
43 | Creating an SDL application with Perl is easy. You have to know a few basics, |
44 | though. Here's how to get up and running as quickly as possible. |
45 | |
46 | =head2 Surfaces |
47 | |
48 | All graphics in SDL live on a surface. You'll need at least one. That's what |
49 | L<SDL::App> provides. |
50 | |
51 | Of course, before you can get a surface, you need to initialize your video |
52 | mode. SDL gives you several options, including whether to run in a window or |
53 | take over the full screen, the size of the window, the bit depth of your |
54 | colors, and whether to use hardware acceleration. For now, we'll build |
55 | something really simple. |
56 | |
57 | =head2 Initialization |
58 | |
59 | SDL::App makes it easy to initialize video and create a surface. Here's how to |
60 | ask for a windowed surface with 640x480x16 resolution: |
61 | |
62 | use SDL::App; |
63 | |
64 | my $app = SDL::App->new( |
65 | -width => 640, |
66 | -height => 480, |
67 | -depth => 16, |
68 | ); |
69 | |
70 | You can get more creative, especially if you use the C<-title> and C<-icon> |
71 | attributes in a windowed application. Here's how to set the window title of |
72 | the application to C<My SDL Program>: |
73 | |
74 | use SDL::App; |
75 | |
76 | my $app = SDL::App->new( |
77 | -height => 640, |
78 | -width => 480, |
79 | -depth => 16, |
80 | -title => 'My SDL Program', |
81 | ); |
82 | |
83 | Setting an icon is a little more involved -- you have to load an image onto a |
84 | surface. That's a bit more complicated, but see the C<-name> parameter to |
85 | C<SDL::Surface->new()> if you want to skip ahead. |
86 | |
87 | =head2 Working With The App |
88 | |
89 | Since C<$app> from the code above is just an SDL surface with some extra sugar, |
90 | it behaves much like L<SDL::Surface>. In particular, the all-important C<blit> |
91 | and C<update> methods work. You'll need to create L<SDL::Rect> objects |
92 | representing sources of graphics to draw onto the C<$app>'s surface, C<blit> |
93 | them there, then C<update> the C<$app>. |
94 | |
95 | B<Note:> "blitting" is copying a chunk of memory from one place to another. |
96 | |
97 | That, however, is another tutorial. |
98 | |
99 | =head1 SEE ALSO |
100 | |
101 | =over 4 |
102 | |
103 | =item L<SDL::Tutorial::Drawing> |
104 | |
105 | basic drawing with rectangles |
106 | |
107 | =item L<SDL::Tutorial::Animation> |
108 | |
109 | basic rectangle animation |
110 | |
111 | =item L<SDL::Tutorial::Images> |
112 | |
113 | image loading and animation |
114 | |
115 | =back |
116 | |
117 | =head1 AUTHOR |
118 | |
119 | chromatic, E<lt>chromatic@wgz.orgE<gt>. |
120 | |
121 | Written for and maintained by the Perl SDL project, L<http://sdl.perl.org/>. |
122 | |
123 | =head1 COPYRIGHT |
124 | |
125 | Copyright (c) 2003 - 2004, chromatic. All rights reserved. This module is |
126 | distributed under the same terms as Perl itself, in the hope that it is useful |
127 | but certainly under no guarantee. |