annotate XCodeiPhoneOS/Demos/src/happy.c @ 2429:2c55b72ba46e gsoc2008_iphone

testdyngles is exactly what it sounds like -- a version of testdyngl that uses OpenGL ES calls instead of OpenGL. Was necessary to create because glOrtho is called glOrthof in OpenGL ES, and OpenGL ES doesn't have glBegin() type semantics for specifying geometry.
author Holmes Futrell <hfutrell@umail.ucsb.edu>
date Fri, 15 Aug 2008 00:52:52 +0000
parents 1cfe7fd15dad
children
rev   line source
2383
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
1 /*
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
2 * happy.c
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
3 * written by Holmes Futrell
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
4 * use however you want
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
5 */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
6
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
7 #include "SDL.h"
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
8 #include "common.h"
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
9
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
10 #define NUM_HAPPY_FACES 100 /* number of faces to draw */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
11 #define MILLESECONDS_PER_FRAME 16 /* about 60 frames per second */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
12 #define HAPPY_FACE_SIZE 32 /* width and height of happyface (pixels) */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
13
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
14 static SDL_TextureID texture_id = 0; /* reference to texture holding happyface */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
15
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
16 static struct {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
17 float x, y; /* position of happyface */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
18 float xvel, yvel; /* velocity of happyface */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
19 } faces[NUM_HAPPY_FACES];
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
20
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
21 /*
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
22 Sets initial positions and velocities of happyfaces
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
23 units of velocity are pixels per millesecond
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
24 */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
25 void initializeHappyFaces() {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
26 int i;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
27 for (i=0; i<NUM_HAPPY_FACES; i++) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
28 faces[i].x = randomFloat(0.0f, SCREEN_WIDTH - HAPPY_FACE_SIZE);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
29 faces[i].y = randomFloat(0.0f, SCREEN_HEIGHT - HAPPY_FACE_SIZE);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
30 faces[i].xvel = randomFloat(-0.1f, 0.1f);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
31 faces[i].yvel = randomFloat(-0.1f, 0.1f);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
32 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
33 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
34
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
35 void render(void) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
36
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
37 int i;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
38 SDL_Rect srcRect;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
39 SDL_Rect dstRect;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
40
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
41 /* setup boundaries for happyface bouncing */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
42 Uint16 maxx = SCREEN_WIDTH - HAPPY_FACE_SIZE;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
43 Uint16 maxy = SCREEN_HEIGHT - HAPPY_FACE_SIZE;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
44 Uint16 minx = 0;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
45 Uint16 miny = 0;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
46
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
47 /* setup rects for drawing */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
48 srcRect.x = 0;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
49 srcRect.y = 0;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
50 srcRect.w = HAPPY_FACE_SIZE;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
51 srcRect.h = HAPPY_FACE_SIZE;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
52 dstRect.w = HAPPY_FACE_SIZE;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
53 dstRect.h = HAPPY_FACE_SIZE;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
54
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
55 /* fill background in with black */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
56 SDL_RenderFill(0, 0, 0, 255, NULL);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
57
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
58 /*
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
59 loop through all the happy faces:
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
60 - update position
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
61 - update velocity (if boundary is hit)
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
62 - draw
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
63 */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
64 for (i=0; i<NUM_HAPPY_FACES; i++) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
65 faces[i].x += faces[i].xvel * MILLESECONDS_PER_FRAME;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
66 faces[i].y += faces[i].yvel * MILLESECONDS_PER_FRAME;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
67 if (faces[i].x > maxx) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
68 faces[i].x = maxx;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
69 faces[i].xvel = -faces[i].xvel;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
70 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
71 else if (faces[i].y > maxy) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
72 faces[i].y = maxy;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
73 faces[i].yvel = -faces[i].yvel;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
74 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
75 if (faces[i].x < minx) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
76 faces[i].x = minx;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
77 faces[i].xvel = -faces[i].xvel;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
78 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
79 else if (faces[i].y < miny) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
80 faces[i].y = miny;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
81 faces[i].yvel = -faces[i].yvel;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
82 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
83 dstRect.x = faces[i].x;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
84 dstRect.y = faces[i].y;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
85 SDL_RenderCopy(texture_id, &srcRect, &dstRect);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
86 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
87 /* update screen */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
88 SDL_RenderPresent();
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
89
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
90 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
91
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
92 /*
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
93 loads the happyface graphic into a texture
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
94 */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
95 void initializeTexture() {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
96 SDL_Surface *bmp_surface;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
97 SDL_Surface *bmp_surface_rgba;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
98 int format = SDL_PIXELFORMAT_ABGR8888; /* desired texture format */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
99 Uint32 Rmask, Gmask, Bmask, Amask; /* masks for desired format */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
100 int bpp; /* bits per pixel for desired format */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
101 /* load the bmp */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
102 bmp_surface = SDL_LoadBMP("icon.bmp");
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
103 if (bmp_surface == NULL) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
104 fatalError("could not load bmp");
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
105 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
106 /* set white to transparent on the happyface */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
107 SDL_SetColorKey(bmp_surface, 1, SDL_MapRGB(bmp_surface->format, 255, 255, 255));
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
108 SDL_PixelFormatEnumToMasks(format, &bpp, &Rmask, &Gmask, &Bmask, &Amask);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
109 /*
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
110 create a new RGBA surface and blit the bmp to it
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
111 this is an extra step, but it seems to be necessary
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
112 is this a bug?
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
113 */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
114 bmp_surface_rgba = SDL_CreateRGBSurface(0, bmp_surface->w, bmp_surface->h, bpp, Rmask, Gmask, Bmask, Amask);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
115 SDL_BlitSurface(bmp_surface, NULL, bmp_surface_rgba, NULL);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
116
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
117 /* convert RGBA surface to texture */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
118 texture_id = SDL_CreateTextureFromSurface(format, bmp_surface_rgba);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
119 if (texture_id == 0) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
120 fatalError("could not create texture");
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
121 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
122 SDL_SetTextureBlendMode(texture_id, SDL_TEXTUREBLENDMODE_BLEND);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
123
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
124 /* free up allocated memory */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
125 SDL_FreeSurface(bmp_surface_rgba);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
126 SDL_FreeSurface(bmp_surface);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
127 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
128
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
129 int main(int argc, char *argv[]) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
130
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
131 SDL_WindowID windowID;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
132 Uint32 startFrame;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
133 Uint32 endFrame;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
134 Uint32 delay;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
135 int done;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
136
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
137 /* initialize SDL */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
138 if (SDL_Init(SDL_INIT_VIDEO) < 0) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
139 fatalError("Could not initialize SDL");
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
140 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
141 windowID = SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,\
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
142 SDL_WINDOW_OPENGL|SDL_WINDOW_SHOWN|SDL_WINDOW_BORDERLESS);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
143
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
144 SDL_CreateRenderer(windowID, -1, 0);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
145
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
146 initializeTexture();
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
147 initializeHappyFaces();
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
148
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
149 /* main loop */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
150 done = 0;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
151 while(!done) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
152 startFrame = SDL_GetTicks();
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
153 SDL_Event event;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
154 while (SDL_PollEvent(&event)) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
155 if (event.type == SDL_QUIT) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
156 done = 1;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
157 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
158 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
159 render();
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
160 endFrame = SDL_GetTicks();
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
161
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
162 /* figure out how much time we have left, and then sleep */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
163 delay = MILLESECONDS_PER_FRAME - (endFrame - startFrame);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
164 if (delay < 0) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
165 delay = 0;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
166 } else if (delay > MILLESECONDS_PER_FRAME) {
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
167 delay = MILLESECONDS_PER_FRAME;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
168 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
169 SDL_Delay(delay);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
170 }
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
171
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
172 /* cleanup */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
173 SDL_DestroyTexture(texture_id);
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
174 /* shutdown SDL */
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
175 SDL_Quit();
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
176
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
177 return 0;
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
178
1cfe7fd15dad Happy faces demo (bitmaps)
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
179 }