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