this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #208 from albertvaka/albertvaka/camera-demo

Add camera demo

authored by

Jonathan Dearborn and committed by
GitHub
c651912e 47a3e2b2

+104 -1
+6 -1
demos/CMakeLists.txt
··· 10 10 add_executable(init-demo init/main.c) 11 11 target_link_libraries (init-demo ${DEMO_LIBS}) 12 12 13 + add_executable(camera-demo camera/main.c) 14 + target_link_libraries (camera-demo ${DEMO_LIBS}) 15 + 13 16 add_executable(3d-demo 3d/main.c ../src/externals/glew/glew.c) 14 17 target_link_libraries (3d-demo ${DEMO_LIBS}) 15 18 ··· 17 20 target_link_libraries (tutorial-space-demo ${DEMO_LIBS}) 18 21 19 22 add_executable(simple-shader-demo simple-shader/main.c) 20 - target_link_libraries (simple-shader-demo ${DEMO_LIBS}) 23 + target_link_libraries (simple-shader-demo ${DEMO_LIBS}) 24 + 25 + file(COPY data DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+98
demos/camera/main.c
··· 1 + #include <SDL.h> 2 + #include "SDL_gpu.h" 3 + 4 + #define MOVE_VEL 800 5 + #define ZOOM_VEL 2 6 + #define ROTATE_VEL 45 7 + 8 + void main_loop(GPU_Target* screen) 9 + { 10 + Uint8 done; 11 + SDL_Event event; 12 + Uint32 start_time, end_time; 13 + float dt; 14 + GPU_Camera camera; 15 + GPU_Image *image1, *image2; 16 + 17 + image1 = GPU_LoadImage("data/test3.png"); 18 + image2 = GPU_LoadImage("data/test2.png"); 19 + 20 + camera = GPU_GetDefaultCamera(); 21 + 22 + start_time = SDL_GetTicks(); 23 + dt = 0.0f; 24 + 25 + done = 0; 26 + while(!done) 27 + { 28 + while(SDL_PollEvent(&event)) 29 + { 30 + if(event.type == SDL_QUIT) 31 + done = 1; 32 + else if(event.type == SDL_KEYDOWN) 33 + { 34 + if(event.key.keysym.sym == SDLK_ESCAPE) 35 + done = 1; 36 + else if(event.key.keysym.sym == SDLK_c) 37 + camera.use_centered_origin = !camera.use_centered_origin; 38 + else if(event.key.keysym.sym == SDLK_w) 39 + camera.y -= MOVE_VEL*dt; 40 + else if(event.key.keysym.sym == SDLK_s) 41 + camera.y += MOVE_VEL*dt; 42 + else if(event.key.keysym.sym == SDLK_a) 43 + camera.x -= MOVE_VEL*dt; 44 + else if(event.key.keysym.sym == SDLK_d) 45 + camera.x += MOVE_VEL*dt; 46 + else if(event.key.keysym.sym == SDLK_d) 47 + camera.x += MOVE_VEL*dt; 48 + else if(event.key.keysym.sym == SDLK_r) 49 + camera.zoom_x = camera.zoom_y += ZOOM_VEL*dt; 50 + else if(event.key.keysym.sym == SDLK_f) 51 + camera.zoom_x = camera.zoom_y -= ZOOM_VEL*dt; 52 + else if(event.key.keysym.sym == SDLK_q) 53 + camera.angle -= ROTATE_VEL*dt; 54 + else if(event.key.keysym.sym == SDLK_e) 55 + camera.angle += ROTATE_VEL*dt; 56 + } 57 + } 58 + 59 + GPU_SetCamera(screen, &camera); 60 + 61 + GPU_Clear(screen); 62 + 63 + for (int i = -10; i < 10; i++) { 64 + GPU_BlitScale(image2, NULL, screen, i*128, 0, 0.5f, 0.5f); 65 + GPU_BlitScale(image2, NULL, screen, 0, i*128, 0.5f, 0.5f); 66 + GPU_BlitScale(image1, NULL, screen, i*100, i*100, 0.5f, 0.5f); 67 + GPU_BlitScale(image1, NULL, screen, i*100, -i*100, 0.5f, 0.5f); 68 + } 69 + 70 + GPU_Flip(screen); 71 + 72 + SDL_Delay(10); 73 + end_time = SDL_GetTicks(); 74 + dt = (end_time - start_time)/1000.0f; 75 + start_time = end_time; 76 + } 77 + } 78 + 79 + int main(int argc, char* argv[]) 80 + { 81 + GPU_Target* screen; 82 + 83 + GPU_SetDebugLevel(GPU_DEBUG_LEVEL_1); 84 + 85 + screen = GPU_Init(800, 600, GPU_DEFAULT_INIT_FLAGS); 86 + if(screen == NULL) 87 + return -1; 88 + 89 + GPU_EnableCamera(screen, true); 90 + 91 + main_loop(screen); 92 + 93 + GPU_Quit(); 94 + 95 + return 0; 96 + } 97 + 98 +