|
1 <HTML |
|
2 ><HEAD |
|
3 ><TITLE |
|
4 >Initializing SDL</TITLE |
|
5 ><META |
|
6 NAME="GENERATOR" |
|
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
|
8 "><LINK |
|
9 REL="HOME" |
|
10 TITLE="SDL Library Documentation" |
|
11 HREF="index.html"><LINK |
|
12 REL="UP" |
|
13 TITLE="The Basics" |
|
14 HREF="guidethebasics.html"><LINK |
|
15 REL="PREVIOUS" |
|
16 TITLE="The Basics" |
|
17 HREF="guidethebasics.html"><LINK |
|
18 REL="NEXT" |
|
19 TITLE="Graphics and Video" |
|
20 HREF="guidevideo.html"></HEAD |
|
21 ><BODY |
|
22 CLASS="SECT1" |
|
23 BGCOLOR="#FFF8DC" |
|
24 TEXT="#000000" |
|
25 LINK="#0000ee" |
|
26 VLINK="#551a8b" |
|
27 ALINK="#ff0000" |
|
28 ><DIV |
|
29 CLASS="NAVHEADER" |
|
30 ><TABLE |
|
31 SUMMARY="Header navigation table" |
|
32 WIDTH="100%" |
|
33 BORDER="0" |
|
34 CELLPADDING="0" |
|
35 CELLSPACING="0" |
|
36 ><TR |
|
37 ><TH |
|
38 COLSPAN="3" |
|
39 ALIGN="center" |
|
40 >SDL Library Documentation</TH |
|
41 ></TR |
|
42 ><TR |
|
43 ><TD |
|
44 WIDTH="10%" |
|
45 ALIGN="left" |
|
46 VALIGN="bottom" |
|
47 ><A |
|
48 HREF="guidethebasics.html" |
|
49 ACCESSKEY="P" |
|
50 >Prev</A |
|
51 ></TD |
|
52 ><TD |
|
53 WIDTH="80%" |
|
54 ALIGN="center" |
|
55 VALIGN="bottom" |
|
56 >Chapter 1. The Basics</TD |
|
57 ><TD |
|
58 WIDTH="10%" |
|
59 ALIGN="right" |
|
60 VALIGN="bottom" |
|
61 ><A |
|
62 HREF="guidevideo.html" |
|
63 ACCESSKEY="N" |
|
64 >Next</A |
|
65 ></TD |
|
66 ></TR |
|
67 ></TABLE |
|
68 ><HR |
|
69 ALIGN="LEFT" |
|
70 WIDTH="100%"></DIV |
|
71 ><DIV |
|
72 CLASS="SECT1" |
|
73 ><H1 |
|
74 CLASS="SECT1" |
|
75 ><A |
|
76 NAME="GUIDEBASICSINIT" |
|
77 ></A |
|
78 >Initializing SDL</H1 |
|
79 ><P |
|
80 >SDL is composed of eight subsystems - Audio, CDROM, Event Handling, File I/O, Joystick Handling, Threading, Timers and Video. Before you can use any of these subsystems they must be initialized by calling <A |
|
81 HREF="sdlinit.html" |
|
82 ><TT |
|
83 CLASS="FUNCTION" |
|
84 >SDL_Init</TT |
|
85 ></A |
|
86 > (or <A |
|
87 HREF="sdlinitsubsystem.html" |
|
88 ><TT |
|
89 CLASS="FUNCTION" |
|
90 >SDL_InitSubSystem</TT |
|
91 ></A |
|
92 >). <TT |
|
93 CLASS="FUNCTION" |
|
94 >SDL_Init</TT |
|
95 > must be called before any other SDL function. It automatically initializes the Event Handling, File I/O and Threading subsystems and it takes a parameter specifying which other subsystems to initialize. So, to initialize the default subsystems and the Video subsystems you would call: |
|
96 <PRE |
|
97 CLASS="PROGRAMLISTING" |
|
98 > SDL_Init ( SDL_INIT_VIDEO );</PRE |
|
99 > |
|
100 To initialize the default subsystems, the Video subsystem and the Timers subsystem you would call: |
|
101 <PRE |
|
102 CLASS="PROGRAMLISTING" |
|
103 > SDL_Init ( SDL_INIT_VIDEO | SDL_INIT_TIMER );</PRE |
|
104 ></P |
|
105 ><P |
|
106 ><TT |
|
107 CLASS="FUNCTION" |
|
108 >SDL_Init</TT |
|
109 > is complemented by <A |
|
110 HREF="sdlquit.html" |
|
111 ><TT |
|
112 CLASS="FUNCTION" |
|
113 >SDL_Quit</TT |
|
114 ></A |
|
115 > (and <A |
|
116 HREF="sdlquitsubsystem.html" |
|
117 ><TT |
|
118 CLASS="FUNCTION" |
|
119 >SDL_QuitSubSystem</TT |
|
120 ></A |
|
121 >). <TT |
|
122 CLASS="FUNCTION" |
|
123 >SDL_Quit</TT |
|
124 > shuts down all subsystems, including the default ones. It should always be called before a SDL application exits.</P |
|
125 ><P |
|
126 >With <TT |
|
127 CLASS="FUNCTION" |
|
128 >SDL_Init</TT |
|
129 > and <TT |
|
130 CLASS="FUNCTION" |
|
131 >SDL_Quit</TT |
|
132 > firmly embedded in your programmers toolkit you can write your first and most basic SDL application. However, we must be prepare to handle errors. Many SDL functions return a value and indicates whether the function has succeeded or failed, <TT |
|
133 CLASS="FUNCTION" |
|
134 >SDL_Init</TT |
|
135 >, for instance, returns -1 if it could not initialize a subsystem. SDL provides a useful facility that allows you to determine exactly what the problem was, every time an error occurs within SDL an error message is stored which can be retrieved using <TT |
|
136 CLASS="FUNCTION" |
|
137 >SDL_GetError</TT |
|
138 >. Use this often, you can never know too much about an error.</P |
|
139 ><DIV |
|
140 CLASS="EXAMPLE" |
|
141 ><A |
|
142 NAME="AEN60" |
|
143 ></A |
|
144 ><P |
|
145 ><B |
|
146 >Example 1-1. Initializing SDL</B |
|
147 ></P |
|
148 ><PRE |
|
149 CLASS="PROGRAMLISTING" |
|
150 >#include "SDL.h" /* All SDL App's need this */ |
|
151 #include <stdio.h> |
|
152 |
|
153 int main(int argc, char *argv[]) { |
|
154 |
|
155 printf("Initializing SDL.\n"); |
|
156 |
|
157 /* Initialize defaults, Video and Audio */ |
|
158 if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) { |
|
159 printf("Could not initialize SDL: %s.\n", SDL_GetError()); |
|
160 exit(-1); |
|
161 } |
|
162 |
|
163 printf("SDL initialized.\n"); |
|
164 |
|
165 printf("Quiting SDL.\n"); |
|
166 |
|
167 /* Shutdown all subsystems */ |
|
168 SDL_Quit(); |
|
169 |
|
170 printf("Quiting....\n"); |
|
171 |
|
172 exit(0); |
|
173 } </PRE |
|
174 ></DIV |
|
175 ></DIV |
|
176 ><DIV |
|
177 CLASS="NAVFOOTER" |
|
178 ><HR |
|
179 ALIGN="LEFT" |
|
180 WIDTH="100%"><TABLE |
|
181 SUMMARY="Footer navigation table" |
|
182 WIDTH="100%" |
|
183 BORDER="0" |
|
184 CELLPADDING="0" |
|
185 CELLSPACING="0" |
|
186 ><TR |
|
187 ><TD |
|
188 WIDTH="33%" |
|
189 ALIGN="left" |
|
190 VALIGN="top" |
|
191 ><A |
|
192 HREF="guidethebasics.html" |
|
193 ACCESSKEY="P" |
|
194 >Prev</A |
|
195 ></TD |
|
196 ><TD |
|
197 WIDTH="34%" |
|
198 ALIGN="center" |
|
199 VALIGN="top" |
|
200 ><A |
|
201 HREF="index.html" |
|
202 ACCESSKEY="H" |
|
203 >Home</A |
|
204 ></TD |
|
205 ><TD |
|
206 WIDTH="33%" |
|
207 ALIGN="right" |
|
208 VALIGN="top" |
|
209 ><A |
|
210 HREF="guidevideo.html" |
|
211 ACCESSKEY="N" |
|
212 >Next</A |
|
213 ></TD |
|
214 ></TR |
|
215 ><TR |
|
216 ><TD |
|
217 WIDTH="33%" |
|
218 ALIGN="left" |
|
219 VALIGN="top" |
|
220 >The Basics</TD |
|
221 ><TD |
|
222 WIDTH="34%" |
|
223 ALIGN="center" |
|
224 VALIGN="top" |
|
225 ><A |
|
226 HREF="guidethebasics.html" |
|
227 ACCESSKEY="U" |
|
228 >Up</A |
|
229 ></TD |
|
230 ><TD |
|
231 WIDTH="33%" |
|
232 ALIGN="right" |
|
233 VALIGN="top" |
|
234 >Graphics and Video</TD |
|
235 ></TR |
|
236 ></TABLE |
|
237 ></DIV |
|
238 ></BODY |
|
239 ></HTML |
|
240 > |