当前位置:   article > 正文

SDL系列(三)—— SDL2.0 扩展库:SDL_image与SDL_mixer_sdl2 image

sdl2 image

SDL_image

SDL 默认支持的,只能打开 BMP 格式的图片
然而我们常见的是 Png jpg 格式的图片,于是我们这节完成 SDL 借用 自带的三方库 ,来
完成加载渲染 png 等其他图片格式。
SDL_image 简介
使用 SDL_image ,您可以加载流行的图像格式,如 BMP PNM PPM / PGM / PBM ),
XPM LBM PCX GIF JPEG PNG TGA TIFF 格式。 这些被加载到你的 SDL_Surface 上, 并且正常地画在屏幕上。同时, 支持 Alpha 透明度,比如加载 PNG 图片。
SDL2.0 扩展库—— SDL_image 的添加
首先,安装前面的配置,有一个基本的 SDL2.0 开发工程,在这个基础上添加 SDL_image
展库。
. 还是在 windows 上,用 vs 编辑器,下载对应的开发包:
  1. int main_show_png()
  2. {
  3. bool quit = false;
  4. SDL_Event event;
  5. //SDL初始化,这里只显示图片,所以只初始化VIDEO系统,更多的支持查看官方文档
  6. SDL_Init(SDL_INIT_VIDEO);
  7. //为了显示png图片,额外使用了图片库,所以要单独初始化
  8. IMG_Init(IMG_INIT_JPG | IMG_INIT_PNG);
  9. //建立SDL窗口
  10. SDL_Window * window = SDL_CreateWindow("SDL2 Displaying Image",
  11. SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);
  12. //渲染层
  13. SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0);
  14. //如果只是显示一张bmp图片,使用sdl内置的功能即可
  15. //SDL_Surface * image = SDL_LoadBMP("only_support_BMP.bmp");
  16. //因为要显示png图片,所以使用了外部库,sdl_image库当前支持jpg/png/webp/tiff图片格式
  17. SDL_Surface * image = IMG_Load("Hello_world.jpg");
  18. //载入的图片生成SDL贴图材质
  19. SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, image);
  20. while (!quit)
  21. {//主消息循环
  22. SDL_WaitEvent(&event);
  23. switch (event.type)
  24. { //用户从菜单要求退出程序
  25. case SDL_QUIT:
  26. quit = true;
  27. break;
  28. }
  29. //如果指定显示位置使用下面注释起来的两句
  30. //SDL_Rect dstrect = { 5, 5, 320, 240 };
  31. //SDL_RenderCopy(renderer, texture, NULL, &dstrect);
  32. //把贴图材质复制到渲染器
  33. SDL_RenderCopy(renderer, texture, NULL, NULL);
  34. //显示出来:刷新渲染器
  35. SDL_RenderPresent(renderer);
  36. }
  37. //典型的三明治结构,清理各项资源
  38. SDL_DestroyTexture(texture);
  39. SDL_FreeSurface(image);
  40. SDL_DestroyRenderer(renderer);
  41. SDL_DestroyWindow(window);
  42. //退出image库
  43. IMG_Quit();
  44. //退出SDL
  45. SDL_Quit();
  46. return 0;
  47. }

SDL_mixer

SDL 本身的音频的扩展是通过 SDL_Mixer 来扩展的。
文档来看 . 可以支持 Wav,MP3,OGG,FAC,MIDI 几种常用的音频的格式。
SDL_mixer 本身只提供 WAV 的解码播放功能 . 其余格式都是封装第三方库来实现的。
SDL_mixer 提供了三个测试程序 playwav ,playmus ,playmidi 来演示如何使用 SDL_mixer
进行播放
sdl2.0 使用 SDL_Mixer 播放音乐
        对于 SDL_2.0 中自带的播放 wav 格式音乐的功能我就不说了,本人用起来感觉特别麻
烦,操作好多,而 SDL_Mixer 库中加载播放 wav 只要三行代码,是的,你没有看错,就是三
行代码,我当时都有点不可思议,那么进入正题吧。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号