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
srcrectSDL_Rect结构表示要复制的矩形的范围,如果为NULL的话,就全部复制
dst容纳拷贝数据的目标SDL_Surface
dstrectSDL_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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值