英文版做者代碼:https://github.com/Twinklebear/TwinklebearDev-Lessonsios
中文版翻譯:http://adolfans.github.io/sdltutorialcn/blog/2013/01/26/lesson-1-hello-world/git
以爲中文版翻譯講得有些繁瑣,就按照本身的理解,整理以下:github
代碼:less
#include <iostream> #include <SDL.h> int main(int, char**) { if (SDL_Init(SDL_INIT_VIDEO)) { std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl; return 1; } SDL_Window *win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN); if (win == nullptr) { std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << std::endl; return 1; } SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); if (ren == nullptr) { SDL_DestroyWindow(win); std::cout << "SDL_CreateRender Error: " << SDL_GetError() << std::endl; SDL_Quit(); return 1; } std::string imagePath = "hello.bmp"; SDL_Surface *bmp = SDL_LoadBMP(imagePath.c_str()); if (bmp == nullptr) { SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); std::cout << "SDL_LoadBMP Error: " << SDL_GetError() << std::endl; SDL_Quit(); return 1; } SDL_Texture *tex = SDL_CreateTextureFromSurface(ren, bmp); SDL_FreeSurface(bmp); if (tex == nullptr) { SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); std::cout << "SDL_CreateTextureFromSurface Error: " << SDL_GetError() << std::endl; SDL_Quit(); return 1; } for (int i = 0; i < 3; ++i) { SDL_RenderClear(ren); SDL_RenderCopy(ren, tex, NULL, NULL); SDL_RenderPresent(ren); SDL_Delay(1000); } SDL_DestroyTexture(tex); SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); SDL_Quit(); return 0; }
初始化: ui
SDL_Init(): 初始化SDL。
SDL_CreateWindow(): 建立窗口(Window)。
SDL_CreateRenderer(): 基於窗口建立渲染器(Render)。
SDL_CreateTexture(): 建立紋理(Texture)。
循環渲染數據: spa
SDL_UpdateTexture(): 設置紋理的數據。
SDL_RenderCopy(): 紋理複製給渲染器。
SDL_RenderPresent(): 顯示。
具體參考:http://blog.csdn.net/leixiaohua1020/article/details/40680907.net