author | Philipp Wiesemann <philipp.wiesemann@arcor.de> |
Tue, 28 Jun 2016 21:14:11 +0200 | |
changeset 10188 | 9cf58ba2b2ad |
parent 10167 | d3db276c1fa6 |
permissions | -rw-r--r-- |
9810
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
1 |
iOS |
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
2 |
====== |
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
3 |
|
9023 | 4 |
============================================================================== |
9810
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
5 |
Building the Simple DirectMedia Layer for iOS 5.1+ |
9023 | 6 |
============================================================================== |
7 |
||
9810
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
8 |
Requirements: Mac OS X 10.8 or later and the iOS 7+ SDK. |
9023 | 9 |
|
10 |
Instructions: |
|
9810
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
11 |
1. Open SDL.xcodeproj (located in Xcode-iOS/SDL) in Xcode. |
9023 | 12 |
2. Select your desired target, and hit build. |
13 |
||
14 |
There are three build targets: |
|
15 |
- libSDL.a: |
|
16 |
Build SDL as a statically linked library |
|
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
17 |
- testsdl: |
9023 | 18 |
Build a test program (there are known test failures which are fine) |
19 |
- Template: |
|
20 |
Package a project template together with the SDL for iPhone static libraries and copies of the SDL headers. The template includes proper references to the SDL library and headers, skeleton code for a basic SDL program, and placeholder graphics for the application icon and startup screen. |
|
21 |
||
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
22 |
|
9023 | 23 |
============================================================================== |
24 |
Build SDL for iOS from the command line |
|
25 |
============================================================================== |
|
26 |
||
27 |
1. cd (PATH WHERE THE SDL CODE IS)/build-scripts |
|
28 |
2. ./iosbuild.sh |
|
29 |
||
30 |
If everything goes fine, you should see a build/ios directory, inside there's |
|
31 |
two directories "lib" and "include". |
|
32 |
"include" contains a copy of the SDL headers that you'll need for your project, |
|
33 |
make sure to configure XCode to look for headers there. |
|
34 |
"lib" contains find two files, libSDL2.a and libSDL2main.a, you have to add both |
|
35 |
to your XCode project. These libraries contain three architectures in them, |
|
36 |
armv6 for legacy devices, armv7, and i386 (for the simulator). |
|
37 |
By default, iosbuild.sh will autodetect the SDK version you have installed using |
|
38 |
xcodebuild -showsdks, and build for iOS >= 3.0, you can override this behaviour |
|
39 |
by setting the MIN_OS_VERSION variable, ie: |
|
40 |
||
41 |
MIN_OS_VERSION=4.2 ./iosbuild.sh |
|
42 |
||
43 |
============================================================================== |
|
44 |
Using the Simple DirectMedia Layer for iOS |
|
45 |
============================================================================== |
|
46 |
||
47 |
FIXME: This needs to be updated for the latest methods |
|
48 |
||
49 |
Here is the easiest method: |
|
9995
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
50 |
1. Build the SDL library (libSDL2.a) and the iPhone SDL Application template. |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
51 |
2. Install the iPhone SDL Application template by copying it to one of Xcode's template directories. I recommend creating a directory called "SDL" in "/Developer/Platforms/iOS.platform/Developer/Library/Xcode/Project Templates/" and placing it there. |
9064
428bff5bf38a
Fixed enumeration in README.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9050
diff
changeset
|
52 |
3. Start a new project using the template. The project should be immediately ready for use with SDL. |
9023 | 53 |
|
54 |
Here is a more manual method: |
|
9995
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
55 |
1. Create a new iOS view based application. |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
56 |
2. Build the SDL static library (libSDL2.a) for iOS and include them in your project. Xcode will ignore the library that is not currently of the correct architecture, hence your app will work both on iOS and in the iOS Simulator. |
9023 | 57 |
3. Include the SDL header files in your project. |
9995
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
58 |
4. Remove the ApplicationDelegate.h and ApplicationDelegate.m files -- SDL for iOS provides its own UIApplicationDelegate. Remove MainWindow.xib -- SDL for iOS produces its user interface programmatically. |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
59 |
5. Delete the contents of main.m and program your app as a regular SDL program instead. You may replace main.m with your own main.c, but you must tell Xcode not to use the project prefix file, as it includes Objective-C code. |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
60 |
|
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
61 |
============================================================================== |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
62 |
Notes -- Retina / High-DPI and window sizes |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
63 |
============================================================================== |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
64 |
|
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
65 |
Window and display mode sizes in SDL are in "screen coordinates" (or "points", |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
66 |
in Apple's terminology) rather than in pixels. On iOS this means that a window |
9997
e330f785a5e7
Fixed typo in README for iOS.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9995
diff
changeset
|
67 |
created on an iPhone 6 will have a size in screen coordinates of 375 x 667, |
9995
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
68 |
rather than a size in pixels of 750 x 1334. All iOS apps are expected to |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
69 |
size their content based on screen coordinates / points rather than pixels, |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
70 |
as this allows different iOS devices to have different pixel densities |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
71 |
(Retina versus non-Retina screens, etc.) without apps caring too much. |
9023 | 72 |
|
9995
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
73 |
By default SDL will not use the full pixel density of the screen on |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
74 |
Retina/high-dpi capable devices. Use the SDL_WINDOW_ALLOW_HIGHDPI flag when |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
75 |
creating your window to enable high-dpi support. |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
76 |
|
10167
d3db276c1fa6
iOS: Added brackets to function names in README so that doxygen links them.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9997
diff
changeset
|
77 |
When high-dpi support is enabled, SDL_GetWindowSize() and display mode sizes |
9995
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
78 |
will still be in "screen coordinates" rather than pixels, but the window will |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
79 |
have a much greater pixel density when the device supports it, and the |
10167
d3db276c1fa6
iOS: Added brackets to function names in README so that doxygen links them.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9997
diff
changeset
|
80 |
SDL_GL_GetDrawableSize() or SDL_GetRendererOutputSize() functions (depending on |
9995
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
81 |
whether raw OpenGL or the SDL_Render API is used) can be queried to determine |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
82 |
the size in pixels of the drawable screen framebuffer. |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
83 |
|
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
84 |
Some OpenGL ES functions such as glViewport expect sizes in pixels rather than |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
85 |
sizes in screen coordinates. When doing 2D rendering with OpenGL ES, an |
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
86 |
orthographic projection matrix using the size in screen coordinates |
10167
d3db276c1fa6
iOS: Added brackets to function names in README so that doxygen links them.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9997
diff
changeset
|
87 |
(SDL_GetWindowSize()) can be used in order to display content at the same scale |
9995
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
88 |
no matter whether a Retina device is used or not. |
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
89 |
|
9023 | 90 |
============================================================================== |
91 |
Notes -- Application events |
|
92 |
============================================================================== |
|
93 |
||
94 |
On iOS the application goes through a fixed life cycle and you will get |
|
95 |
notifications of state changes via application events. When these events |
|
96 |
are delivered you must handle them in an event callback because the OS may |
|
97 |
not give you any processing time after the events are delivered. |
|
98 |
||
99 |
e.g. |
|
100 |
||
9050
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
101 |
int HandleAppEvents(void *userdata, SDL_Event *event) |
9023 | 102 |
{ |
9050
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
103 |
switch (event->type) |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
104 |
{ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
105 |
case SDL_APP_TERMINATING: |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
106 |
/* Terminate the app. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
107 |
Shut everything down before returning from this function. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
108 |
*/ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
109 |
return 0; |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
110 |
case SDL_APP_LOWMEMORY: |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
111 |
/* You will get this when your app is paused and iOS wants more memory. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
112 |
Release as much memory as possible. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
113 |
*/ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
114 |
return 0; |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
115 |
case SDL_APP_WILLENTERBACKGROUND: |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
116 |
/* Prepare your app to go into the background. Stop loops, etc. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
117 |
This gets called when the user hits the home button, or gets a call. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
118 |
*/ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
119 |
return 0; |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
120 |
case SDL_APP_DIDENTERBACKGROUND: |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
121 |
/* This will get called if the user accepted whatever sent your app to the background. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
122 |
If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
123 |
When you get this, you have 5 seconds to save all your state or the app will be terminated. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
124 |
Your app is NOT active at this point. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
125 |
*/ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
126 |
return 0; |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
127 |
case SDL_APP_WILLENTERFOREGROUND: |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
128 |
/* This call happens when your app is coming back to the foreground. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
129 |
Restore all your state here. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
130 |
*/ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
131 |
return 0; |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
132 |
case SDL_APP_DIDENTERFOREGROUND: |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
133 |
/* Restart your loops here. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
134 |
Your app is interactive and getting CPU again. |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
135 |
*/ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
136 |
return 0; |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
137 |
default: |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
138 |
/* No special processing, add it to the event queue */ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
139 |
return 1; |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
140 |
} |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
141 |
} |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
142 |
|
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
143 |
int main(int argc, char *argv[]) |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
144 |
{ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
145 |
SDL_SetEventFilter(HandleAppEvents, NULL); |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
146 |
|
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
147 |
... run your main loop |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
148 |
|
9023 | 149 |
return 0; |
150 |
} |
|
151 |
||
152 |
||
153 |
============================================================================== |
|
154 |
Notes -- Accelerometer as Joystick |
|
155 |
============================================================================== |
|
156 |
||
157 |
SDL for iPhone supports polling the built in accelerometer as a joystick device. For an example on how to do this, see the accelerometer.c in the demos directory. |
|
158 |
||
10167
d3db276c1fa6
iOS: Added brackets to function names in README so that doxygen links them.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9997
diff
changeset
|
159 |
The main thing to note when using the accelerometer with SDL is that while the iPhone natively reports accelerometer as floating point values in units of g-force, SDL_JoystickGetAxis() reports joystick values as signed integers. Hence, in order to convert between the two, some clamping and scaling is necessary on the part of the iPhone SDL joystick driver. To convert SDL_JoystickGetAxis() reported values BACK to units of g-force, simply multiply the values by SDL_IPHONE_MAX_GFORCE / 0x7FFF. |
9023 | 160 |
|
161 |
============================================================================== |
|
162 |
Notes -- OpenGL ES |
|
163 |
============================================================================== |
|
164 |
||
9810
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
165 |
Your SDL application for iOS uses OpenGL ES for video by default. |
9023 | 166 |
|
10167
d3db276c1fa6
iOS: Added brackets to function names in README so that doxygen links them.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9997
diff
changeset
|
167 |
OpenGL ES for iOS supports several display pixel formats, such as RGBA8 and RGB565, which provide a 32 bit and 16 bit color buffer respectively. By default, the implementation uses RGB565, but you may use RGBA8 by setting each color component to 8 bits in SDL_GL_SetAttribute(). |
9023 | 168 |
|
169 |
If your application doesn't use OpenGL's depth buffer, you may find significant performance improvement by setting SDL_GL_DEPTH_SIZE to 0. |
|
170 |
||
9810
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
171 |
Finally, if your application completely redraws the screen each frame, you may find significant performance improvement by setting the attribute SDL_GL_RETAINED_BACKING to 0. |
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
172 |
|
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
173 |
OpenGL ES on iOS doesn't use the traditional system-framebuffer setup provided in other operating systems. Special care must be taken because of this: |
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
174 |
|
10167
d3db276c1fa6
iOS: Added brackets to function names in README so that doxygen links them.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9997
diff
changeset
|
175 |
- The drawable Renderbuffer must be bound to the GL_RENDERBUFFER binding point when SDL_GL_SwapWindow() is called. |
d3db276c1fa6
iOS: Added brackets to function names in README so that doxygen links them.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9997
diff
changeset
|
176 |
- The drawable Framebuffer Object must be bound while rendering to the screen and when SDL_GL_SwapWindow() is called. |
9810
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
177 |
- If multisample antialiasing (MSAA) is used and glReadPixels is used on the screen, the drawable framebuffer must be resolved to the MSAA resolve framebuffer (via glBlitFramebuffer or glResolveMultisampleFramebufferAPPLE), and the MSAA resolve framebuffer must be bound to the GL_READ_FRAMEBUFFER binding point, before glReadPixels is called. |
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
178 |
|
10167
d3db276c1fa6
iOS: Added brackets to function names in README so that doxygen links them.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9997
diff
changeset
|
179 |
The above objects can be obtained via SDL_GetWindowWMInfo() (in SDL_syswm.h). |
9023 | 180 |
|
181 |
============================================================================== |
|
182 |
Notes -- Keyboard |
|
183 |
============================================================================== |
|
184 |
||
185 |
The SDL keyboard API has been extended to support on-screen keyboards: |
|
186 |
||
187 |
void SDL_StartTextInput() |
|
188 |
-- enables text events and reveals the onscreen keyboard. |
|
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
189 |
|
9023 | 190 |
void SDL_StopTextInput() |
191 |
-- disables text events and hides the onscreen keyboard. |
|
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
192 |
|
9023 | 193 |
SDL_bool SDL_IsTextInputActive() |
194 |
-- returns whether or not text events are enabled (and the onscreen keyboard is visible) |
|
195 |
||
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
196 |
|
9023 | 197 |
============================================================================== |
198 |
Notes -- Reading and Writing files |
|
199 |
============================================================================== |
|
200 |
||
201 |
Each application installed on iPhone resides in a sandbox which includes its own Application Home directory. Your application may not access files outside this directory. |
|
202 |
||
203 |
Once your application is installed its directory tree looks like: |
|
204 |
||
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
205 |
MySDLApp Home/ |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
206 |
MySDLApp.app |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
207 |
Documents/ |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
208 |
Library/ |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
209 |
Preferences/ |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
210 |
tmp/ |
9023 | 211 |
|
212 |
When your SDL based iPhone application starts up, it sets the working directory to the main bundle (MySDLApp Home/MySDLApp.app), where your application resources are stored. You cannot write to this directory. Instead, I advise you to write document files to "../Documents/" and preferences to "../Library/Preferences". |
|
213 |
||
214 |
More information on this subject is available here: |
|
215 |
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html |
|
216 |
||
217 |
============================================================================== |
|
218 |
Notes -- iPhone SDL limitations |
|
219 |
============================================================================== |
|
220 |
||
221 |
Windows: |
|
10167
d3db276c1fa6
iOS: Added brackets to function names in README so that doxygen links them.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9997
diff
changeset
|
222 |
Full-size, single window applications only. You cannot create multi-window SDL applications for iPhone OS. The application window will fill the display, though you have the option of turning on or off the menu-bar (pass SDL_CreateWindow() the flag SDL_WINDOW_BORDERLESS). |
9023 | 223 |
|
224 |
Textures: |
|
225 |
The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats. |
|
226 |
||
227 |
Loading Shared Objects: |
|
9810
1e079120100e
Added MSAA support for OpenGL ES contexts on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9066
diff
changeset
|
228 |
This is disabled by default since it seems to break the terms of the iOS SDK agreement for iOS versions prior to iOS 8. It can be re-enabled in SDL_config_iphoneos.h. |
9023 | 229 |
|
230 |
============================================================================== |
|
231 |
Game Center |
|
232 |
============================================================================== |
|
233 |
||
9995
d79480c1e151
Updated some header comments and iOS documentation to better clarify high-dpi / retina support and screen-coordinate sizes versus pixel sizes.
Alex Szpakowski <slime73@gmail.com>
parents:
9810
diff
changeset
|
234 |
Game Center integration might require that you break up your main loop in order to yield control back to the system. In other words, instead of running an endless main loop, you run each frame in a callback function, using: |
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
235 |
|
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
236 |
int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam); |
9023 | 237 |
|
238 |
This will set up the given function to be called back on the animation callback, and then you have to return from main() to let the Cocoa event loop run. |
|
239 |
||
240 |
e.g. |
|
241 |
||
9050
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
242 |
extern "C" |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
243 |
void ShowFrame(void*) |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
244 |
{ |
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
245 |
... do event handling, frame logic and rendering ... |
9050
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
246 |
} |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
247 |
|
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
248 |
int main(int argc, char *argv[]) |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
249 |
{ |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
250 |
... initialize game ... |
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
251 |
|
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
252 |
#if __IPHONEOS__ |
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
253 |
// Initialize the Game Center for scoring and matchmaking |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
254 |
InitGameCenter(); |
9050
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
255 |
|
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
256 |
// Set up the game to run in the window animation callback on iOS |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
257 |
// so that Game Center and so forth works correctly. |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
258 |
SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL); |
9050
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
259 |
#else |
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
260 |
while ( running ) { |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
261 |
ShowFrame(0); |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
262 |
DelayFrame(); |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
263 |
} |
9050
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
264 |
#endif |
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9064
diff
changeset
|
265 |
return 0; |
9050
bc9616da37cd
Fixed doxygen warning and markdown formatting.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
266 |
} |