Commit | Line | Data |
bfd90409 |
1 | #!/usr/bin/env perl |
2 | # |
3 | # Tutorial.pm |
4 | # |
5 | # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org> |
6 | # |
7 | # ------------------------------------------------------------------------------ |
8 | # |
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. |
13 | # |
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. |
18 | # |
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 |
22 | # |
23 | # ------------------------------------------------------------------------------ |
24 | # |
25 | # Please feel free to send questions, suggestions or improvements to: |
26 | # |
27 | # David J. Goehrig |
28 | # dgoehrig@cpan.org |
29 | # |
30 | |
31 | package SDL::Tutorial; |
32 | |
33 | use strict; |
02ddb292 |
34 | use warnings; |
35 | |
bfd90409 |
36 | use SDL; |
37 | use SDL::App; |
38 | |
39 | # change these values as necessary |
40 | my $title = 'My SDL App'; |
41 | my ($width, $height, $depth) = ( 640, 480, 16 ); |
42 | |
43 | my $app = SDL::App->new( |
44 | -width => $width, |
45 | -height => $height, |
46 | -depth => $depth, |
47 | -title => $title, |
48 | ); |
49 | |
50 | # your code here; remove the next line |
51 | sleep 2; |
bfd90409 |
52 | |
53 | 1; |
54 | |
55 | __END__ |
56 | |
57 | =head1 NAME |
58 | |
59 | SDL::Tutorial - introduction to Perl SDL |
60 | |
61 | =head1 SYNOPSIS |
62 | |
63 | # to read this tutorial |
64 | $ perldoc SDL::Tutorial |
65 | |
66 | # to create a bare-bones SDL app based on this tutorial |
e8ebd102 |
67 | $ perl -MSDL::Tutorial -e 1 |
bfd90409 |
68 | |
69 | =head1 SDL BASICS |
70 | |
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/>. |
74 | |
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. |
77 | |
78 | =head2 Surfaces |
79 | |
80 | All graphics in SDL live on a surface. You'll need at least one. That's what |
81 | L<SDL::App> provides. |
82 | |
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. |
88 | |
89 | =head2 Initialization |
90 | |
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: |
93 | |
94 | use SDL::App; |
95 | |
96 | my $app = SDL::App->new( |
97 | -width => 640, |
98 | -height => 480, |
99 | -depth => 16, |
100 | ); |
101 | |
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>: |
105 | |
106 | use SDL::App; |
107 | |
108 | my $app = SDL::App->new( |
109 | -height => 640, |
110 | -width => 480, |
111 | -depth => 16, |
112 | -title => 'My SDL Program', |
113 | ); |
114 | |
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. |
118 | |
119 | =head2 Working With The App |
120 | |
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>. |
126 | |
127 | B<Note:> "blitting" is copying a chunk of memory from one place to another. |
128 | |
129 | That, however, is another tutorial. |
130 | |
131 | =head1 SEE ALSO |
132 | |
133 | =over 4 |
134 | |
135 | =item L<SDL::Tutorial::Drawing> |
136 | |
137 | basic drawing with rectangles |
138 | |
139 | =item L<SDL::Tutorial::Animation> |
140 | |
141 | basic rectangle animation |
142 | |
143 | =item L<SDL::Tutorial::Images> |
144 | |
145 | image loading and animation |
146 | |
147 | =back |
148 | |
149 | =head1 AUTHOR |
150 | |
151 | chromatic, E<lt>chromatic@wgz.orgE<gt>. |
152 | |
153 | Written for and maintained by the Perl SDL project, L<http://sdl.perl.org/>. |
154 | |
155 | =head1 COPYRIGHT |
156 | |
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. |