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_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 @@
|
||||||
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 */
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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()
|
||||||
/* 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()
|
||||||
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()
|
||||||
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[])
|
||||||
{
|
{
|
||||||
|
|
||||||
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[])
|
||||||
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[])
|
||||||
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[])
|
||||||
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()
|
||||||
/* 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[])
|
||||||
}
|
}
|
||||||
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()
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
render(void)
|
render(SDL_Renderer *renderer)
|
||||||
{
|
{
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
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)
|
||||||
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()
|
||||||
/* 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[])
|
||||||
{
|
{
|
||||||
|
|
||||||
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[])
|
||||||
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");
|
||||||
|
|
||||||
initializeTexture();
|
renderer = SDL_CreateRenderer(window, -1, 0);
|
||||||
|
|
||||||
|
initializeTexture(renderer);
|
||||||
initializeHappyFaces();
|
initializeHappyFaces();
|
||||||
|
|
||||||
/* main loop */
|
/* main loop */
|
||||||
|
@ -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];
|
||||||
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)
|
||||||
|
|
||||||
/* 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[])
|
||||||
|
|
||||||
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[])
|
||||||
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[])
|
||||||
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 @@
|
||||||
#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)
|
||||||
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[])
|
||||||
{
|
{
|
||||||
|
|
||||||
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[])
|
||||||
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[])
|
||||||
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 */
|
||||||
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)
|
||||||
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)
|
||||||
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()
|
||||||
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[])
|
||||||
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[])
|
||||||
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[])
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue