用 SDL2 显示一张图片

来源:

http://adolfans.github.io/sdltutorialcn/ (中文教程)

http://www.willusher.io/pages/sdl2/ (英文教程)

环境:SDL2 + VC++2015

下面的代码将打开一个窗口显示hello.bmp

 1 #include <iostream>
 2 #include <SDL.h>
 3 
 4 int main(int argc, char** argv)
 5 {
 6     //初始化SDL
 7     if (SDL_Init(SDL_INIT_VIDEO) != 0)
 8     {
 9         std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
10         return 1;
11     }
12 
13     //创建窗口
14     SDL_Window *win = nullptr;
15     win = SDL_CreateWindow("Hello World!",
16         SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
17         640, 480, SDL_WINDOW_SHOWN);
18     if (win == nullptr)
19     {
20         std::cout << SDL_GetError() << std::endl;
21         return 1;
22     }
23 
24     //创建渲染器
25     SDL_Renderer *ren = nullptr;
26     ren = SDL_CreateRenderer(win, -1,
27         SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
28     if (ren == nullptr)
29     {
30         std::cout << SDL_GetError() << std::endl;
31         return 1;
32     }
33 
34     //创建表面
35     SDL_Surface *bmp = nullptr;
36     bmp = SDL_LoadBMP("hello.bmp");
37     if (bmp == nullptr) {
38         std::cout << SDL_GetError() << std::endl;
39         return 1;
40     }
41 
42     //创建材质
43     SDL_Texture *tex = nullptr;
44     tex = SDL_CreateTextureFromSurface(ren, bmp);
45     SDL_FreeSurface(bmp);
46 
47     //清空渲染器
48     SDL_RenderClear(ren);
49     //将材质复制到渲染器
50     SDL_RenderCopy(ren, tex, NULL, NULL);
51     //呈现渲染器
52     SDL_RenderPresent(ren);
53     //窗口延时
54     SDL_Delay(2000);
55 
56     //释放资源
57     SDL_DestroyTexture(tex);
58     SDL_DestroyRenderer(ren);
59     SDL_DestroyWindow(win);
60     //退出SDL
61     SDL_Quit();
62 
63     return 0;
64 }

 

posted @ 2016-06-05 14:11  Joxon  阅读(1560)  评论(0编辑  收藏  举报