aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Beltran <ben@nsovocal.com>2013-08-13 22:01:37 -0500
committerBen Beltran <ben@nsovocal.com>2013-08-13 22:01:37 -0500
commited603039c4a456b37aefe434a3b1a5352362d86b (patch)
tree21822696ab208b4faf2993b470ed8626f124d825 /src
parent2a85937c26e28a825636989b4dfde52f546f8567 (diff)
Rotation!
Diffstat (limited to 'src')
-rw-r--r--src/main.c47
1 files changed, 40 insertions, 7 deletions
diff --git a/src/main.c b/src/main.c
index 602dff3..b51a79d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -8,6 +8,7 @@
#include <stdio.h>
#include <time.h>
+#include <math.h>
#include "SDL2/SDL.h"
#include "SDL2_image/SDL_image.h"
@@ -19,7 +20,9 @@
SDL_Window *window;
SDL_Renderer *renderer;
-SDL_Surface *benHead;
+SDL_Texture *benHead;
+SDL_Rect benRect;
+double angle = 0;
void init () {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
@@ -35,25 +38,51 @@ void init () {
// Set linear quality for scaling, and the "logical" window size.
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");
SDL_RenderSetLogicalSize(renderer, SCREEN_WIDTH, SCREEN_HEIGHT);
-
+}
+
+void close () {
+ SDL_DestroyTexture(benHead);
+ SDL_DestroyRenderer(renderer);
+ SDL_DestroyWindow(window);
+ SDL_Quit();
+}
+
+void loadAssets() {
// Load the surface.
- // benHead = IMG_Load("data/img/static/ben.png");
+ SDL_Surface *benSurface;
+ benSurface = IMG_Load("data/img/static/ben.png");
+ benHead = SDL_CreateTextureFromSurface(renderer, benSurface);
+ benRect.x = 230;
+ benRect.y = 150;
+ benRect.w = 180;
+ benRect.h = 180;
+ SDL_FreeSurface(benSurface);
}
void render (SDL_Renderer *renderer) {
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderClear(renderer);
+ SDL_RenderCopyEx(renderer, benHead, NULL, &benRect, angle, NULL, SDL_FLIP_NONE);
SDL_RenderPresent(renderer);
}
-int mainC(int argc, const char * argv[])
+void update (dt) {
+ angle = (Uint32)(angle + dt / 5) % 360;
+}
+
+int main(int argc, const char * argv[])
{
// SDL Initialization. TODO: Should have an initializer.
- Uint32 startFrame;
- Uint32 endFrame;
+ Uint32 startFrame = 0;
+ Uint32 endFrame = 0;
+ Uint32 lastTime = 0;
+ Uint32 dt;
Uint32 delay;
int done;
+
+ init();
+ loadAssets();
done = 0;
@@ -61,6 +90,9 @@ int mainC(int argc, const char * argv[])
// Event Loop.
while (!done) {
startFrame = SDL_GetTicks();
+ dt = startFrame - lastTime;
+ lastTime = startFrame;
+
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
@@ -68,6 +100,7 @@ int mainC(int argc, const char * argv[])
}
}
+ update(dt);
render(renderer);
endFrame = SDL_GetTicks();
@@ -80,7 +113,7 @@ int mainC(int argc, const char * argv[])
SDL_Delay(delay);
}
- SDL_Quit();
+ close();
return 0;
}