SDL2之source code 下载安装

参考:https://blog.csdn.net/qq_31024569/article/details/77884072

 

https://www.libsdl.org/

下载SDL2源码

 

https://www.libsdl.org/projects/

下载image, rrf等源码

 

1.1 弹出一个窗口

完整程序:

main.cpp
#include <SDL2/SDL.h>
#include <stdio.h>

//定义屏幕尺寸常量
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main( int argc, char* args[] )
{
        //将要渲染的窗口
        SDL_Window* window = NULL;
        //窗口含有的surface
        SDL_Surface* screenSurface = NULL;

        //初始化SDL
        if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
        {
                printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
        }
        else
        {
                //创建 window
                //window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
                window = SDL_CreateWindow( "SDL Tutorial", 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
                if( window == NULL )
                {
                        printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
                }
                else
                {
                        //获取 window surface
                        screenSurface = SDL_GetWindowSurface( window );
                        //用白色填充surface
                        SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );
                        //更新surface
                        SDL_UpdateWindowSurface( window );
                        //延迟两秒
                        SDL_Delay( 2000 );
                }
        }

        //销毁window
        SDL_DestroyWindow( window );

        //退出 SDL subsystems
        SDL_Quit();
        return 0;
}

1.2 程序解释

1) 主函数的参数一定是一个int以及char *数组(顺序不能变)且主函数的返回值必须为int。任何其他形式的主函数会导致对主函数未定义的引用(an undefined reference to main),这样的主函数才能让SDL与多个平台兼容。

2) int SDL_Init(Uint32 flags); 正常,则函数返回0,如果异常,则返回-1

3) SDL_CreatWindow()函数来创建窗口,

第一个参数设置窗口的标题或窗口的这一部分

接下来的两个参数定义了窗口生成处的x和y的坐标。因为我们暂时不用关心它创建在哪里,所以就直接使用SDL_WINDOWPOS_UNDEFINED这个预定义的常量来初始化x和y坐标

接下来的两个参数定义了窗口的宽度和高度。最后那个参数是创建标签(creation flag)。以SDL_WINDOW_SHOWN作为此参数时,表示窗口一创建即为可见的(非隐藏窗口?)

4) SDL_FillRect()函数来填充整个窗口

5) 说一下关于渲染的很重要的事,在screen surface上更改或画上一些东西并不意味着你会看到更改后的surface。只有更新(update)窗口后,它才会展示你更改之后的surface。操作完成后使用SDL_UpdateWindowSurface()这个函数就行了。

6) SDL_Delay(), 参数为毫秒

posted @ 2019-05-07 14:38  HenryLiuY  阅读(823)  评论(0)    收藏  举报