206 lines
5.3 KiB
C
206 lines
5.3 KiB
C
|
#include <stdio.h>
|
||
|
#include <assert.h>
|
||
|
|
||
|
#include <SDL2/SDL.h>
|
||
|
#include <SDL2/SDL_image.h>
|
||
|
|
||
|
#ifdef __EMSCRIPTEN__
|
||
|
#include <emscripten.h>
|
||
|
#endif
|
||
|
|
||
|
const int SCREEN_WIDTH = 640;
|
||
|
const int SCREEN_HEIGHT = 480;
|
||
|
|
||
|
int main(int argc, char **argv) {
|
||
|
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
|
||
|
printf("error initializing SDL: %s\n", SDL_GetError());
|
||
|
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
SDL_Window *window = NULL;
|
||
|
window =
|
||
|
SDL_CreateWindow("Hello, SDL 2!", SDL_WINDOWPOS_CENTERED,
|
||
|
SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, 0);
|
||
|
|
||
|
if (window == NULL) {
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
SDL_Renderer* renderer = NULL;
|
||
|
renderer = SDL_CreateRenderer( window, -1, SDL_RENDERER_ACCELERATED);
|
||
|
SDL_SetRenderDrawColor( renderer, 255, 0, 0, 255 );
|
||
|
SDL_RenderClear( renderer );
|
||
|
|
||
|
|
||
|
|
||
|
SDL_Rect dest;
|
||
|
dest.w= 50;
|
||
|
dest.h= 50;
|
||
|
dest.x = 10;
|
||
|
dest.y = 10;
|
||
|
|
||
|
SDL_SetRenderDrawColor( renderer, 0, 0, 255, 255 );
|
||
|
SDL_RenderFillRect( renderer, &dest );
|
||
|
|
||
|
// SDL_Surface *image = IMG_Load("girl_faces.png");
|
||
|
// if (!image) {
|
||
|
// printf("IMG_Load: %s\n", IMG_GetError());
|
||
|
// return 0;
|
||
|
// }
|
||
|
|
||
|
// SDL_Texture *tex = SDL_CreateTextureFromSurface(rend, image);
|
||
|
// SDL_FreeSurface(image);
|
||
|
// SDL_QueryTexture(tex, NULL, NULL, &dest.w, &dest.h);
|
||
|
|
||
|
// SDL_RenderClear(rend);
|
||
|
// SDL_RenderCopy(rend, tex, NULL, &dest);
|
||
|
SDL_RenderPresent(renderer);
|
||
|
|
||
|
SDL_Delay(2000);
|
||
|
SDL_DestroyWindow(window);
|
||
|
SDL_Quit();
|
||
|
|
||
|
return 0;
|
||
|
|
||
|
// printf("hello, world!\n");
|
||
|
|
||
|
// puts("0");
|
||
|
|
||
|
// if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
|
||
|
// printf("error initializing SDL: %s\n", SDL_GetError());
|
||
|
|
||
|
// return 1;
|
||
|
// }
|
||
|
|
||
|
// SDL_Surface *screen_surface = NULL;
|
||
|
|
||
|
// SDL_Window *window = NULL;
|
||
|
|
||
|
// puts("1");
|
||
|
|
||
|
// window =
|
||
|
// SDL_CreateWindow("Hello, SDL 2!", SDL_WINDOWPOS_CENTERED,
|
||
|
// SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT,
|
||
|
// 0);
|
||
|
|
||
|
// if (window == NULL) {
|
||
|
// return 1;
|
||
|
// }
|
||
|
|
||
|
// Uint32 render_flags = SDL_RENDERER_ACCELERATED;
|
||
|
|
||
|
// // creates a renderer to render our images
|
||
|
// SDL_Renderer* rend = SDL_CreateRenderer(window, -1, render_flags);
|
||
|
|
||
|
// screen_surface = SDL_GetWindowSurface(window);
|
||
|
|
||
|
// // creates a surface to load an image into the main memory
|
||
|
// SDL_Surface *surface;
|
||
|
// // please provide a path for your image
|
||
|
// surface = IMG_Load("girl_faces.png");
|
||
|
// // loads image to our graphics hardware memory.
|
||
|
// SDL_Texture *tex = SDL_CreateTextureFromSurface(rend, surface);
|
||
|
// // clears main-memory
|
||
|
// SDL_FreeSurface(surface);
|
||
|
// // let us control our image position
|
||
|
// // so that we can move it with our keyboard.
|
||
|
// SDL_Rect dest;
|
||
|
// // connects our texture with dest to control position
|
||
|
// SDL_QueryTexture(tex, NULL, NULL, &dest.w, &dest.h);
|
||
|
// // adjust height and width of our image box.
|
||
|
// dest.w /= 6;
|
||
|
// dest.h /= 6;
|
||
|
// // sets initial x-position of object
|
||
|
// dest.x = (1000 - dest.w) / 2;
|
||
|
// // sets initial y-position of object
|
||
|
// dest.y = (1000 - dest.h) / 2;
|
||
|
|
||
|
// puts("13");
|
||
|
|
||
|
// // controls animation loop
|
||
|
// int close = 0;
|
||
|
|
||
|
// // speed of box
|
||
|
// int speed = 300;
|
||
|
|
||
|
// // animation loop
|
||
|
// while (!close) {
|
||
|
// SDL_Event event;
|
||
|
|
||
|
// // Events management
|
||
|
// while (SDL_PollEvent(&event)) {
|
||
|
// switch (event.type) {
|
||
|
|
||
|
// case SDL_QUIT:
|
||
|
// // handling of close button
|
||
|
// close = 1;
|
||
|
// break;
|
||
|
|
||
|
// case SDL_KEYDOWN:
|
||
|
// // keyboard API for key pressed
|
||
|
// switch (event.key.keysym.scancode) {
|
||
|
// case SDL_SCANCODE_ESCAPE:
|
||
|
// close = 1;
|
||
|
// break;
|
||
|
// case SDL_SCANCODE_W:
|
||
|
// case SDL_SCANCODE_UP:
|
||
|
// dest.y -= speed / 30;
|
||
|
// break;
|
||
|
// case SDL_SCANCODE_A:
|
||
|
// case SDL_SCANCODE_LEFT:
|
||
|
// dest.x -= speed / 30;
|
||
|
// break;
|
||
|
// case SDL_SCANCODE_S:
|
||
|
// case SDL_SCANCODE_DOWN:
|
||
|
// dest.y += speed / 30;
|
||
|
// break;
|
||
|
// case SDL_SCANCODE_D:
|
||
|
// case SDL_SCANCODE_RIGHT:
|
||
|
// dest.x += speed / 30;
|
||
|
// break;
|
||
|
// default:
|
||
|
// break;
|
||
|
// }
|
||
|
// }
|
||
|
// }
|
||
|
|
||
|
// // right boundary
|
||
|
// if (dest.x + dest.w > 1000)
|
||
|
// dest.x = 1000 - dest.w;
|
||
|
|
||
|
// // left boundary
|
||
|
// if (dest.x < 0)
|
||
|
// dest.x = 0;
|
||
|
|
||
|
// // bottom boundary
|
||
|
// if (dest.y + dest.h > 1000)
|
||
|
// dest.y = 1000 - dest.h;
|
||
|
|
||
|
// // upper boundary
|
||
|
// if (dest.y < 0)
|
||
|
// dest.y = 0;
|
||
|
|
||
|
// // clears the screen
|
||
|
// SDL_RenderClear(rend);
|
||
|
// SDL_RenderCopy(rend, tex, NULL, &dest);
|
||
|
|
||
|
// ///
|
||
|
// /// Section 4: SDL ttf and rendering text
|
||
|
// ///
|
||
|
|
||
|
// // triggers the double buffers
|
||
|
// // for multiple rendering
|
||
|
// SDL_RenderPresent(rend);
|
||
|
|
||
|
// // calculates to 60 fps
|
||
|
// SDL_Delay(1000 / 60);
|
||
|
// }
|
||
|
|
||
|
// SDL_Delay(2000);
|
||
|
|
||
|
// SDL_DestroyWindow(window);
|
||
|
|
||
|
// SDL_Quit();
|
||
|
}
|