Commit ccdb593a authored by Sam Lantinga's avatar Sam Lantinga

Updated the iPhone demos for the new API

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