Steward
分享是一種喜悅、更是一種幸福
程式語言 - Simple DirectMedia Layer (SDL) - v2.0 - C/C++ - Pixels Manipulation
參考資訊:
https://wiki.libsdl.org/FrontPage
main.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <stdio.h> #include <stdlib.h> #include <SDL.h> int main ( int argc, char **argv) { const int w = 320; const int h = 240; const int bpp = 16; SDL_Window * window = NULL ; SDL_Surface *screen = NULL ; SDL_Texture *texture = NULL ; SDL_Renderer *renderer = NULL ; SDL_Init ( SDL_INIT_VIDEO ); window = SDL_CreateWindow ( "main" , SDL_WINDOWPOS_UNDEFINED , SDL_WINDOWPOS_UNDEFINED , w, h, SDL_WINDOW_SHOWN ); renderer = SDL_CreateRenderer ( window , -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC ); screen = SDL_CreateRGBSurface (0, w, h, bpp, 0, 0, 0, 0); texture = SDL_CreateTexture (renderer, SDL_PIXELFORMAT_RGB565 , SDL_TEXTUREACCESS_STREAMING , w, h); int x = 0, y = 0; uint16_t *s = screen->pixels; for (y = 0; y < 240; y++) { for (x = 0; x < 320; x++) { *s++ = 0x7e0; } } SDL_UpdateTexture (texture, NULL , screen->pixels, screen->pitch); SDL_RenderClear (renderer); SDL_RenderCopy (renderer, texture, NULL , NULL ); SDL_RenderPresent (renderer); SDL_Delay (3000); SDL_FreeSurface (screen); SDL_DestroyTexture (texture); SDL_DestroyRenderer (renderer); SDL_DestroyWindow ( window ); SDL_Quit (); return 0; } |
編譯、執行
$ gcc main.c -o main -lSDL2 -I/usr/include/SDL2 $ ./main