linux sdl 显示内存,SDL 从内存流中加载图像并显示

最近做项目需要实现这么一个功能,需要将Android平板上显示的内容实时传送到投影仪上显示。

连接投影仪的机器安装了 CentOS 6,采用 SDL 开发库做 UI 界面。系统本来的需求只要在投影仪上显示一些图片和文字就可以了。现在要添加了一个监控 Android平板显示的内容,做一个简单的系统分析。首先 Android 平板端要截屏并保存为字节流数组(采用PNG),这个相对简单,网上文章很多。然后就是字节流的发送和接收,采用 UDP 方式,这个也不难,现在的瓶颈就是投影仪端接收到的这个字节流数据,如何通过 SDL 的方式加载并显示。我们知道从磁盘文件中加载图片并显示使用 SDL_image 扩展库的 IMG_Load 函数,在 SDL_image.h 中该函数的下方我发现了另一个加载函数:

extern DECLSPEC SDL_Surface * SDLCALL IMG_Load_RW(SDL_RWops *src, int freesrc);

我猜测该加载函数可能能达到我的要求,该函数使用了一个 SDL_RWops * 类型的参数,于是我再查找该类型的声明,功夫不负有心人,在 SDL_rwops.h 中我找到了该结构体的定义,同时在该头文件中我找到了两个函数,

extern DECLSPEC SDL_RWops * SDLCALL

SDL_RWFromMem(void *mem, int size);

extern DECLSPEC SDL_RWops * SDLCALL

SDL_RWFromConstMem(const void *mem, int size);

这两个函数的名称很明显就是我要的,从内存流中读取图形数据,并且返回一个指向 SDL_RWops 结构体的指针。

于是马上组织代码,首先调用 SDL_RWFromMem 读取 UDP 接收到的数据,接下来将该函数的返回值传送给 IMG_Load_RW 函数,完成图形数据的加载,返回我们熟悉的 SDL_Surface *,然后完成显示,一切 OK。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值