Updated the iPhone demos for the new API
This commit is contained in:
parent
a83bca04d0
commit
ccdb593a0b
7 changed files with 58 additions and 84 deletions
|
@ -748,7 +748,7 @@
|
|||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = ../../include;
|
||||
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../SDLiPod/build/Release-iphoneos\"";
|
||||
LIBRARY_SEARCH_PATHS = "";
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CFLAGS = "";
|
||||
PREBINDING = NO;
|
||||
|
@ -767,7 +767,7 @@
|
|||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = ../../include;
|
||||
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../SDLiPod/build/Release-iphoneos\"";
|
||||
LIBRARY_SEARCH_PATHS = "";
|
||||
OTHER_CFLAGS = "";
|
||||
PREBINDING = NO;
|
||||
PRELINK_LIBS = "";
|
||||
|
|
|
@ -31,7 +31,7 @@ static SDL_Texture *ship = 0; /* texture for spaceship */
|
|||
static SDL_Texture *space = 0; /* texture for space (background */
|
||||
|
||||
void
|
||||
render(void)
|
||||
render(SDL_Renderer *renderer)
|
||||
{
|
||||
|
||||
|
||||
|
@ -97,28 +97,24 @@ render(void)
|
|||
}
|
||||
|
||||
/* draw the background */
|
||||
SDL_RenderCopy(space, NULL, NULL);
|
||||
SDL_RenderCopy(renderer, space, NULL, NULL);
|
||||
|
||||
/* draw the ship */
|
||||
shipData.rect.x = shipData.x;
|
||||
shipData.rect.y = shipData.y;
|
||||
|
||||
SDL_RenderCopy(ship, NULL, &shipData.rect);
|
||||
SDL_RenderCopy(renderer, ship, NULL, &shipData.rect);
|
||||
|
||||
/* update screen */
|
||||
SDL_RenderPresent();
|
||||
SDL_RenderPresent(renderer);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
initializeTextures()
|
||||
initializeTextures(SDL_Renderer *renderer)
|
||||
{
|
||||
|
||||
SDL_Surface *bmp_surface;
|
||||
SDL_Surface *bmp_surface_rgba;
|
||||
int format = SDL_PIXELFORMAT_ABGR8888; /* desired texture format */
|
||||
Uint32 Rmask, Gmask, Bmask, Amask; /* masks for desired format */
|
||||
int bpp; /* bits per pixel for desired format */
|
||||
|
||||
/* load the ship */
|
||||
bmp_surface = SDL_LoadBMP("ship.bmp");
|
||||
|
@ -128,20 +124,9 @@ initializeTextures()
|
|||
/* set blue to transparent on the ship */
|
||||
SDL_SetColorKey(bmp_surface, 1,
|
||||
SDL_MapRGB(bmp_surface->format, 0, 0, 255));
|
||||
SDL_PixelFormatEnumToMasks(format, &bpp, &Rmask, &Gmask, &Bmask, &Amask);
|
||||
/*
|
||||
create a new RGBA surface and blit the bmp to it
|
||||
this is an extra step, but it seems to be necessary for the color key to work
|
||||
|
||||
does the fact that this is necessary indicate a bug in SDL?
|
||||
*/
|
||||
bmp_surface_rgba =
|
||||
SDL_CreateRGBSurface(0, bmp_surface->w, bmp_surface->h, bpp, Rmask,
|
||||
Gmask, Bmask, Amask);
|
||||
SDL_BlitSurface(bmp_surface, NULL, bmp_surface_rgba, NULL);
|
||||
|
||||
/* create ship texture from surface */
|
||||
ship = SDL_CreateTextureFromSurface(format, bmp_surface_rgba);
|
||||
ship = SDL_CreateTextureFromSurface(renderer, bmp_surface);
|
||||
if (ship == 0) {
|
||||
fatalError("could not create ship texture");
|
||||
}
|
||||
|
@ -151,7 +136,6 @@ initializeTextures()
|
|||
shipData.rect.w = bmp_surface->w;
|
||||
shipData.rect.h = bmp_surface->h;
|
||||
|
||||
SDL_FreeSurface(bmp_surface_rgba);
|
||||
SDL_FreeSurface(bmp_surface);
|
||||
|
||||
/* load the space background */
|
||||
|
@ -160,7 +144,7 @@ initializeTextures()
|
|||
fatalError("could not load space.bmp");
|
||||
}
|
||||
/* create space texture from surface */
|
||||
space = SDL_CreateTextureFromSurface(format, bmp_surface);
|
||||
space = SDL_CreateTextureFromSurface(renderer, bmp_surface);
|
||||
if (space == 0) {
|
||||
fatalError("could not create space texture");
|
||||
}
|
||||
|
@ -175,6 +159,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
|
||||
SDL_Window *window; /* main window */
|
||||
SDL_Renderer *renderer;
|
||||
Uint32 startFrame; /* time frame began to process */
|
||||
Uint32 endFrame; /* time frame ended processing */
|
||||
Uint32 delay; /* time to pause waiting to draw next frame */
|
||||
|
@ -189,7 +174,7 @@ main(int argc, char *argv[])
|
|||
window = SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
|
||||
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN |
|
||||
SDL_WINDOW_BORDERLESS);
|
||||
SDL_CreateRenderer(window, 0, 0);
|
||||
renderer = SDL_CreateRenderer(window, 0, 0);
|
||||
|
||||
/* print out some info about joysticks and try to open accelerometer for use */
|
||||
printf("There are %d joysticks available\n", SDL_NumJoysticks());
|
||||
|
@ -208,7 +193,7 @@ main(int argc, char *argv[])
|
|||
SDL_JoystickNumButtons(accelerometer));
|
||||
|
||||
/* load graphics */
|
||||
initializeTextures();
|
||||
initializeTextures(renderer);
|
||||
|
||||
/* setup ship */
|
||||
shipData.x = (SCREEN_WIDTH - shipData.rect.w) / 2;
|
||||
|
@ -226,7 +211,7 @@ main(int argc, char *argv[])
|
|||
done = 1;
|
||||
}
|
||||
}
|
||||
render();
|
||||
render(renderer);
|
||||
endFrame = SDL_GetTicks();
|
||||
|
||||
/* figure out how much time we have left, and then sleep */
|
||||
|
|
|
@ -173,9 +173,6 @@ drawParticles()
|
|||
/* draw our particles! */
|
||||
glDrawArrays(GL_POINTS, 0, num_active_particles);
|
||||
|
||||
/* update screen */
|
||||
SDL_RenderPresent();
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -437,6 +434,7 @@ main(int argc, char *argv[])
|
|||
}
|
||||
stepParticles();
|
||||
drawParticles();
|
||||
SDL_GL_SwapWindow(window);
|
||||
endFrame = SDL_GetTicks();
|
||||
|
||||
/* figure out how much time we have left, and then sleep */
|
||||
|
|
|
@ -36,7 +36,7 @@ initializeHappyFaces()
|
|||
}
|
||||
|
||||
void
|
||||
render(void)
|
||||
render(SDL_Renderer *renderer)
|
||||
{
|
||||
|
||||
int i;
|
||||
|
@ -58,8 +58,8 @@ render(void)
|
|||
dstRect.h = HAPPY_FACE_SIZE;
|
||||
|
||||
/* fill background in with black */
|
||||
SDL_SetRenderDrawColor(0, 0, 0, 255);
|
||||
SDL_RenderFill(NULL);
|
||||
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
|
||||
SDL_RenderClear(renderer);
|
||||
|
||||
/*
|
||||
loop through all the happy faces:
|
||||
|
@ -86,10 +86,10 @@ render(void)
|
|||
}
|
||||
dstRect.x = faces[i].x;
|
||||
dstRect.y = faces[i].y;
|
||||
SDL_RenderCopy(texture, &srcRect, &dstRect);
|
||||
SDL_RenderCopy(renderer, texture, &srcRect, &dstRect);
|
||||
}
|
||||
/* update screen */
|
||||
SDL_RenderPresent();
|
||||
SDL_RenderPresent(renderer);
|
||||
|
||||
}
|
||||
|
||||
|
@ -97,13 +97,9 @@ render(void)
|
|||
loads the happyface graphic into a texture
|
||||
*/
|
||||
void
|
||||
initializeTexture()
|
||||
initializeTexture(SDL_Renderer *renderer)
|
||||
{
|
||||
SDL_Surface *bmp_surface;
|
||||
SDL_Surface *bmp_surface_rgba;
|
||||
int format = SDL_PIXELFORMAT_ABGR8888; /* desired texture format */
|
||||
Uint32 Rmask, Gmask, Bmask, Amask; /* masks for desired format */
|
||||
int bpp; /* bits per pixel for desired format */
|
||||
/* load the bmp */
|
||||
bmp_surface = SDL_LoadBMP("icon.bmp");
|
||||
if (bmp_surface == NULL) {
|
||||
|
@ -112,26 +108,15 @@ initializeTexture()
|
|||
/* set white to transparent on the happyface */
|
||||
SDL_SetColorKey(bmp_surface, 1,
|
||||
SDL_MapRGB(bmp_surface->format, 255, 255, 255));
|
||||
SDL_PixelFormatEnumToMasks(format, &bpp, &Rmask, &Gmask, &Bmask, &Amask);
|
||||
/*
|
||||
create a new RGBA surface and blit the bmp to it
|
||||
this is an extra step, but it seems to be necessary
|
||||
is this a bug?
|
||||
*/
|
||||
bmp_surface_rgba =
|
||||
SDL_CreateRGBSurface(0, bmp_surface->w, bmp_surface->h, bpp, Rmask,
|
||||
Gmask, Bmask, Amask);
|
||||
SDL_BlitSurface(bmp_surface, NULL, bmp_surface_rgba, NULL);
|
||||
|
||||
/* convert RGBA surface to texture */
|
||||
texture = SDL_CreateTextureFromSurface(format, bmp_surface_rgba);
|
||||
texture = SDL_CreateTextureFromSurface(renderer, bmp_surface);
|
||||
if (texture == 0) {
|
||||
fatalError("could not create texture");
|
||||
}
|
||||
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
|
||||
|
||||
/* free up allocated memory */
|
||||
SDL_FreeSurface(bmp_surface_rgba);
|
||||
SDL_FreeSurface(bmp_surface);
|
||||
}
|
||||
|
||||
|
@ -140,6 +125,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
|
||||
SDL_Window *window;
|
||||
SDL_Renderer *renderer;
|
||||
Uint32 startFrame;
|
||||
Uint32 endFrame;
|
||||
Uint32 delay;
|
||||
|
@ -153,9 +139,11 @@ main(int argc, char *argv[])
|
|||
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN |
|
||||
SDL_WINDOW_BORDERLESS);
|
||||
|
||||
SDL_CreateRenderer(window, -1, 0);
|
||||
//SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengles2");
|
||||
|
||||
renderer = SDL_CreateRenderer(window, -1, 0);
|
||||
|
||||
initializeTexture();
|
||||
initializeTexture(renderer);
|
||||
initializeHappyFaces();
|
||||
|
||||
/* main loop */
|
||||
|
@ -168,7 +156,7 @@ main(int argc, char *argv[])
|
|||
done = 1;
|
||||
}
|
||||
}
|
||||
render();
|
||||
render(renderer);
|
||||
endFrame = SDL_GetTicks();
|
||||
|
||||
/* figure out how much time we have left, and then sleep */
|
||||
|
|
|
@ -33,7 +33,6 @@ static struct sound drums[NUM_DRUMS];
|
|||
void handleMouseButtonDown(SDL_Event * event);
|
||||
void handleMouseButtonUp(SDL_Event * event);
|
||||
int playSound(struct sound *);
|
||||
void render(void);
|
||||
void initializeButtons();
|
||||
void audioCallback(void *userdata, Uint8 * stream, int len);
|
||||
void loadSound(const char *file, struct sound *s);
|
||||
|
@ -163,20 +162,20 @@ handleMouseButtonUp(SDL_Event * event)
|
|||
|
||||
/* draws buttons to screen */
|
||||
void
|
||||
render(void)
|
||||
render(SDL_Renderer *renderer)
|
||||
{
|
||||
int i;
|
||||
SDL_SetRenderDrawColor(50, 50, 50, 255);
|
||||
SDL_RenderFill(NULL); /* draw background (gray) */
|
||||
SDL_SetRenderDrawColor(renderer, 50, 50, 50, 255);
|
||||
SDL_RenderClear(renderer); /* draw background (gray) */
|
||||
/* draw the drum buttons */
|
||||
for (i = 0; i < NUM_DRUMS; i++) {
|
||||
SDL_Color color =
|
||||
buttons[i].isPressed ? buttons[i].downColor : buttons[i].upColor;
|
||||
SDL_SetRenderDrawColor(color.r, color.g, color.b, color.unused);
|
||||
SDL_RenderFill(&buttons[i].rect);
|
||||
SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, color.unused);
|
||||
SDL_RenderFillRect(renderer, &buttons[i].rect);
|
||||
}
|
||||
/* update the screen */
|
||||
SDL_RenderPresent();
|
||||
SDL_RenderPresent(renderer);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -274,6 +273,7 @@ main(int argc, char *argv[])
|
|||
|
||||
int done; /* has user tried to quit ? */
|
||||
SDL_Window *window; /* main window */
|
||||
SDL_Renderer *renderer;
|
||||
SDL_Event event;
|
||||
Uint32 startFrame; /* holds when frame started processing */
|
||||
Uint32 endFrame; /* holds when frame ended processing */
|
||||
|
@ -285,7 +285,7 @@ main(int argc, char *argv[])
|
|||
window =
|
||||
SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
|
||||
SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS);
|
||||
SDL_CreateRenderer(window, 0, 0);
|
||||
renderer = SDL_CreateRenderer(window, 0, 0);
|
||||
|
||||
/* initialize the mixer */
|
||||
SDL_memset(&mixer, 0, sizeof(mixer));
|
||||
|
@ -328,7 +328,7 @@ main(int argc, char *argv[])
|
|||
break;
|
||||
}
|
||||
}
|
||||
render(); /* draw buttons */
|
||||
render(renderer); /* draw buttons */
|
||||
endFrame = SDL_GetTicks();
|
||||
|
||||
/* figure out how much time we have left, and then sleep */
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "common.h"
|
||||
|
||||
void
|
||||
render(void)
|
||||
render(SDL_Renderer *renderer)
|
||||
{
|
||||
|
||||
Uint8 r, g, b;
|
||||
|
@ -26,11 +26,11 @@ render(void)
|
|||
b = randomInt(50, 255);
|
||||
|
||||
/* Fill the rectangle in the color */
|
||||
SDL_SetRenderDrawColor(r, g, b, 255);
|
||||
SDL_RenderFill(&rect);
|
||||
SDL_SetRenderDrawColor(renderer, r, g, b, 255);
|
||||
SDL_RenderFillRect(renderer, &rect);
|
||||
|
||||
/* update screen */
|
||||
SDL_RenderPresent();
|
||||
SDL_RenderPresent(renderer);
|
||||
|
||||
}
|
||||
|
||||
|
@ -39,6 +39,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
|
||||
SDL_Window *window;
|
||||
SDL_Renderer *renderer;
|
||||
int done;
|
||||
SDL_Event event;
|
||||
|
||||
|
@ -57,13 +58,14 @@ main(int argc, char *argv[])
|
|||
if (window == 0) {
|
||||
fatalError("Could not initialize Window");
|
||||
}
|
||||
if (SDL_CreateRenderer(window, -1, 0) != 0) {
|
||||
renderer = SDL_CreateRenderer(window, -1, 0);
|
||||
if (!renderer) {
|
||||
fatalError("Could not create renderer");
|
||||
}
|
||||
|
||||
/* Fill screen with black */
|
||||
SDL_SetRenderDrawColor(0, 0, 0, 255);
|
||||
SDL_RenderFill(NULL);
|
||||
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
|
||||
SDL_RenderClear(renderer);
|
||||
|
||||
/* Enter render loop, waiting for user to quit */
|
||||
done = 0;
|
||||
|
@ -73,7 +75,7 @@ main(int argc, char *argv[])
|
|||
done = 1;
|
||||
}
|
||||
}
|
||||
render();
|
||||
render(renderer);
|
||||
SDL_Delay(1);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ static SDL_Texture *brush = 0; /* texture for the brush */
|
|||
this is accomplished by drawing several blots spaced PIXELS_PER_ITERATION apart
|
||||
*/
|
||||
void
|
||||
drawLine(float startx, float starty, float dx, float dy)
|
||||
drawLine(SDL_Renderer *renderer, float startx, float starty, float dx, float dy)
|
||||
{
|
||||
|
||||
float distance = sqrt(dx * dx + dy * dy); /* length of line segment (pythagoras) */
|
||||
|
@ -43,7 +43,7 @@ drawLine(float startx, float starty, float dx, float dy)
|
|||
x += dx_prime;
|
||||
y += dy_prime;
|
||||
/* draw brush blot */
|
||||
SDL_RenderCopy(brush, NULL, &dstRect);
|
||||
SDL_RenderCopy(renderer, brush, NULL, &dstRect);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ drawLine(float startx, float starty, float dx, float dy)
|
|||
loads the brush texture
|
||||
*/
|
||||
void
|
||||
initializeTexture()
|
||||
initializeTexture(SDL_Renderer *renderer)
|
||||
{
|
||||
SDL_Surface *bmp_surface;
|
||||
bmp_surface = SDL_LoadBMP("stroke.bmp");
|
||||
|
@ -59,7 +59,7 @@ initializeTexture()
|
|||
fatalError("could not load stroke.bmp");
|
||||
}
|
||||
brush =
|
||||
SDL_CreateTextureFromSurface(SDL_PIXELFORMAT_ABGR8888, bmp_surface);
|
||||
SDL_CreateTextureFromSurface(renderer, bmp_surface);
|
||||
SDL_FreeSurface(bmp_surface);
|
||||
if (brush == 0) {
|
||||
fatalError("could not create brush texture");
|
||||
|
@ -78,6 +78,7 @@ main(int argc, char *argv[])
|
|||
Uint8 state; /* mouse (touch) state */
|
||||
SDL_Event event;
|
||||
SDL_Window *window; /* main window */
|
||||
SDL_Renderer *renderer;
|
||||
int done; /* does user want to quit? */
|
||||
|
||||
/* initialize SDL */
|
||||
|
@ -89,15 +90,15 @@ main(int argc, char *argv[])
|
|||
window = SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
|
||||
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN |
|
||||
SDL_WINDOW_BORDERLESS);
|
||||
SDL_CreateRenderer(window, 0, 0);
|
||||
renderer = SDL_CreateRenderer(window, 0, 0);
|
||||
|
||||
/*load brush texture */
|
||||
initializeTexture();
|
||||
initializeTexture(renderer);
|
||||
|
||||
/* fill canvass initially with all black */
|
||||
SDL_SetRenderDrawColor(0, 0, 0, 255);
|
||||
SDL_RenderFill(NULL);
|
||||
SDL_RenderPresent();
|
||||
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
|
||||
SDL_RenderClear();
|
||||
SDL_RenderPresent(renderer);
|
||||
|
||||
done = 0;
|
||||
while (!done && SDL_WaitEvent(&event)) {
|
||||
|
@ -109,8 +110,8 @@ main(int argc, char *argv[])
|
|||
state = SDL_GetMouseState(&x, &y); /* get its location */
|
||||
SDL_GetRelativeMouseState(&dx, &dy); /* find how much the mouse moved */
|
||||
if (state & SDL_BUTTON_LMASK) { /* is the mouse (touch) down? */
|
||||
drawLine(x - dx, y - dy, dx, dy); /* draw line segment */
|
||||
SDL_RenderPresent();
|
||||
drawLine(renderer, x - dx, y - dy, dx, dy); /* draw line segment */
|
||||
SDL_RenderPresent(renderer);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue