美文网首页
SDL2常用函数

SDL2常用函数

作者: 蒋斌文 | 来源:发表于2021-05-31 09:41 被阅读0次

    SDL2常用函数&结构分析:SDL_BlitSurface&SDL_UpdateWindowSurface

    SDL_BlitSurface

    函数功能:将一个surface的数据快速复制到目标surface中。

    函数原型:

    int SDL_BlitSurface(SDL_Surface*    src,
                        const SDL_Rect* srcrect,
                        SDL_Surface*    dst,
                        SDL_Rect*       dstrect)
    

    参数列表:

    src 被拷贝的SDL_Surface
    srcrect SDL_Rect结构表示要复制的矩形的范围,如果为NULL的话,就全部复制
    dst 容纳拷贝数据的目标SDL_Surface
    dstrect SDL_Rect结构表示拷贝到的矩形范围,如果为NULL的话,就全部拷贝

    返回值:如果blit成功则返回0,失败则返回负数错误代码; 调用SDL_GetError()可以获取更多异常信息。

    SDL_UpdateWindowSurface

    函数功能:将窗口surface复制到屏幕。

    函数原型:

    int SDL_UpdateWindowSurface(SDL_Window* window)
    

    参数:window:要更新的窗口

    返回值:成功时返回0,失败时返回负数错误码; 调用SDL_GetError()可以获取更多异常信息。

    SDL_BlitSurfaceSDL_UpdateWindowSurface函数一般是相伴出现,当已经准备好的surface被拷贝后,也就以为着,这部分数据需要被显示了。

    示例代码

    示例代码用于显示一张box.bmp图片。

    #include "SDL.h" // include SDL header
    int main(int argc, char* argv[])
    {
        SDL_Surface *screen;
        SDL_Window *window;
        SDL_Surface *image;
      
        SDL_Init(SDL_INIT_VIDEO); // 初始化视频子系统
        // 创建一个窗体
        window = SDL_CreateWindow("SDL2 Example", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);
        // 获得一个与窗体关联的surface,赋值给screen
        screen = SDL_GetWindowSurface(window);
        image = SDL_LoadBMP("box.bmp"); // 加载一个bmp图片文件,并把surface赋值给image
        SDL_BlitSurface(image, NULL, screen, NULL); // 将image中的的数据拷贝到screen中,相当于直接显示
        SDL_FreeSurface(image); // image数据以经拷贝出去,已经失去价值
        SDL_UpdateWindowSurface(window); // 刷新窗体,让与窗体关联的screen中的数据能够显示出来。
        // show image for 2 seconds
        SDL_Delay(2000);
        SDL_DestroyWindow(window);
        SDL_Quit();
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:SDL2常用函数

          本文链接:https://www.haomeiwen.com/subject/ugbvsltx.html