README.iOS
author Andreas Schiffler <aschiffler@ferzkopp.net>
Mon, 14 Jan 2013 07:20:55 -0800
changeset 6814 fccdef204fcf
parent 6654 2ecfb25be1e2
child 7190 11612d544fcd
child 8340 e470405f3ae9
permissions -rw-r--r--
Fix RWops test suite crash on Linux: remove unnecessary fclose
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     1
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     2
Building the Simple DirectMedia Layer for iPhone OS 2.0
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     3
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     4
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     5
Requirements: Mac OS X v10.5 or later and the iPhone SDK.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     6
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     7
Instructions:
6159
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
     8
1.  Open SDL.xcodeproj (located in Xcode-iOS/SDL) in XCode.
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
     9
2.  Select your desired target, and hit build.
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    10
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    11
There are three build targets:
6159
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    12
- libSDL.a:
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    13
	Build SDL as a statically linked library
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    14
- testsdl
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    15
	Build a test program (there are known test failures which are fine)
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    16
- Template:
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    17
	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.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    18
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    19
==============================================================================
6333
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    20
Build SDL for iOS from the command line
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    21
==============================================================================
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    22
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    23
1. cd (PATH WHERE THE SDL CODE IS)/build-scripts
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    24
2. ./iosbuild.sh
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    25
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    26
If everything goes fine, you should see a build/ios directory, inside there's
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    27
two directories "lib" and "include". 
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    28
"include" contains a copy of the SDL headers that you'll need for your project,
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    29
make sure to configure XCode to look for headers there.
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    30
"lib" contains find two files, libSDL2.a and libSDL2main.a, you have to add both 
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    31
to your XCode project. These libraries contain three architectures in them,
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    32
armv6 for legacy devices, armv7, and i386 (for the simulator).
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    33
By default, iosbuild.sh will autodetect the SDK version you have installed using 
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    34
xcodebuild -showsdks, and build for iOS >= 3.0, you can override this behaviour 
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    35
by setting the MIN_OS_VERSION variable, ie:
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    36
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    37
MIN_OS_VERSION=4.2 ./iosbuild.sh
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    38
8d541aa4e1da Adds a simple command line utility (iosbuild.sh) to create iOS binaries for armv6, armv7 and i386
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6251
diff changeset
    39
==============================================================================
6159
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    40
Using the Simple DirectMedia Layer for iOS
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    41
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    42
6159
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    43
FIXME: This needs to be updated for the latest methods
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    44
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    45
Here is the easiest method:
6159
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    46
1.  Build the SDL libraries (libSDL.a and libSDLSimulator.a) and the iPhone SDL Application template.
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    47
1.  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.
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    48
2.  Start a new project using the template.  The project should be immediately ready for use with SDL.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    49
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    50
Here is a more manual method:
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    51
1.  Create a new iPhone view based application.
6159
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
    52
2.  Build the SDL static libraries (libSDL.a and libSDLSimulator.a) for iPhone 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 iPhone and in the iPhone Simulator.
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    53
3.  Include the SDL header files in your project.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    54
4.  Remove the ApplicationDelegate.h and ApplicationDelegate.m files -- SDL for iPhone provides its own UIApplicationDelegate.  Remove MainWindow.xib -- SDL for iPhone produces its user interface programmatically.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    55
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.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    56
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    57
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    58
Notes -- Accelerometer as Joystick
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    59
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    60
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    61
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.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    62
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    63
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.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    64
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    65
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    66
Notes -- OpenGL ES
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    67
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    68
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    69
Your SDL application for iPhone uses OpenGL ES for video by default.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    70
4666
52e871f486b8 Revision 3163 added the following formats for OpenGL ES:
Sam Lantinga <slouken@libsdl.org>
parents: 3685
diff changeset
    71
OpenGL ES for iPhone 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.
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    72
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    73
If your application doesn't use OpenGL's depth buffer, you may find significant performance improvement by setting SDL_GL_DEPTH_SIZE to 0.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    74
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    75
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 1.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    76
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    77
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    78
Notes -- Keyboard
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    79
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    80
6392
fa7eb111f994 Fixed bug 1564 - SDL has no function to open a screen keyboard on Android.
Sam Lantinga <slouken@libsdl.org>
parents: 6342
diff changeset
    81
The SDL keyboard API has been extended to support on-screen keyboards:
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    82
6654
2ecfb25be1e2 Synchronized the on-screen keyboard state with whether we are accepting text input.
Sam Lantinga <slouken@libsdl.org>
parents: 6589
diff changeset
    83
void SDL_StartTextInput()
2ecfb25be1e2 Synchronized the on-screen keyboard state with whether we are accepting text input.
Sam Lantinga <slouken@libsdl.org>
parents: 6589
diff changeset
    84
	-- enables text events and reveals the onscreen keyboard.
2ecfb25be1e2 Synchronized the on-screen keyboard state with whether we are accepting text input.
Sam Lantinga <slouken@libsdl.org>
parents: 6589
diff changeset
    85
void SDL_StopTextInput()
2ecfb25be1e2 Synchronized the on-screen keyboard state with whether we are accepting text input.
Sam Lantinga <slouken@libsdl.org>
parents: 6589
diff changeset
    86
	-- disables text events and hides the onscreen keyboard.
2ecfb25be1e2 Synchronized the on-screen keyboard state with whether we are accepting text input.
Sam Lantinga <slouken@libsdl.org>
parents: 6589
diff changeset
    87
SDL_bool SDL_IsTextInputActive()
2ecfb25be1e2 Synchronized the on-screen keyboard state with whether we are accepting text input.
Sam Lantinga <slouken@libsdl.org>
parents: 6589
diff changeset
    88
	-- returns whether or not text events are enabled (and the onscreen keyboard is visible)
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    89
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    90
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    91
Notes -- Reading and Writing files
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    92
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    93
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    94
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.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    95
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    96
Once your application is installed its directory tree looks like:
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    97
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    98
MySDLApp Home/
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    99
	MySDLApp.app
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   100
	Documents/
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   101
	Library/
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   102
		Preferences/
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   103
	tmp/
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   104
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   105
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".  
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   106
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   107
More information on this subject is available here:
6159
fb6f363032fd Updated iOS projects and renamed iPhoneOS to iOS
Sam Lantinga <slouken@libsdl.org>
parents: 4689
diff changeset
   108
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   109
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   110
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   111
Notes -- iPhone SDL limitations
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   112
==============================================================================
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   113
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   114
Windows:
6589
46d985073364 Updated the limitations and Game Center sections
Sam Lantinga <slouken@libsdl.org>
parents: 6534
diff changeset
   115
	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).
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   116
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   117
Textures:
6589
46d985073364 Updated the limitations and Game Center sections
Sam Lantinga <slouken@libsdl.org>
parents: 6534
diff changeset
   118
	The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   119
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   120
Loading Shared Objects:
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   121
	This is disabled by default since it seems to break the terms of the iPhone SDK agreement.  It can be re-enabled in SDL_config_iphoneos.h.
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   122
6534
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   123
==============================================================================
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   124
Game Center 
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   125
==============================================================================
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   126
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   127
Game Center integration requires 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:
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   128
    
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   129
int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   130
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   131
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.
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   132
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   133
e.g.
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   134
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   135
extern "C"
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   136
void ShowFrame(void*)
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   137
{
6589
46d985073364 Updated the limitations and Game Center sections
Sam Lantinga <slouken@libsdl.org>
parents: 6534
diff changeset
   138
    ... do event handling, frame logic and rendering
6534
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   139
}
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   140
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   141
int main(int argc, char *argv[])
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   142
{
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   143
   ... initialize game ...
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   144
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   145
#if __IPHONEOS__
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   146
        // Initialize the Game Center for scoring and matchmaking
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   147
        InitGameCenter();
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   148
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   149
        // Set up the game to run in the window animation callback on iOS
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   150
        // so that Game Center and so forth works correctly.
6589
46d985073364 Updated the limitations and Game Center sections
Sam Lantinga <slouken@libsdl.org>
parents: 6534
diff changeset
   151
        SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
6534
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   152
#else
6589
46d985073364 Updated the limitations and Game Center sections
Sam Lantinga <slouken@libsdl.org>
parents: 6534
diff changeset
   153
        while ( running ) {
6534
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   154
                ShowFrame(0);
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   155
                DelayFrame();
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   156
        }
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   157
#endif
8faa51147576 Updated iOS Readme to reflect Game Center integration changes.
Gabriel Jacobo <gabomdq@gmail.com>
parents: 6392
diff changeset
   158
        return 0;
6589
46d985073364 Updated the limitations and Game Center sections
Sam Lantinga <slouken@libsdl.org>
parents: 6534
diff changeset
   159
}