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
扩
展库。
下载地址:
https://www.libsdl.org/projects/SDL_image/
.
还是在
windows
上,用
vs
编辑器,下载对应的开发包:
int main_show_png()
{
bool quit = false;
SDL_Event event;
//SDL初始化,这里只显示图片,所以只初始化VIDEO系统,更多的支持查看官方文档
SDL_Init(SDL_INIT_VIDEO);
//为了显示png图片,额外使用了图片库,所以要单独初始化
IMG_Init(IMG_INIT_JPG | IMG_INIT_PNG);
//建立SDL窗口
SDL_Window * window = SDL_CreateWindow("SDL2 Displaying Image",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);
//渲染层
SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0);
//如果只是显示一张bmp图片,使用sdl内置的功能即可
//SDL_Surface * image = SDL_LoadBMP("only_support_BMP.bmp");
//因为要显示png图片,所以使用了外部库,sdl_image库当前支持jpg/png/webp/tiff图片格式
SDL_Surface * image = IMG_Load("Hello_world.jpg");
//载入的图片生成SDL贴图材质
SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, image);
while (!quit)
{//主消息循环
SDL_WaitEvent(&event);
switch (event.type)
{ //用户从菜单要求退出程序
case SDL_QUIT:
quit = true;
break;
}
//如果指定显示位置使用下面注释起来的两句
//SDL_Rect dstrect = { 5, 5, 320, 240 };
//SDL_RenderCopy(renderer, texture, NULL, &dstrect);
//把贴图材质复制到渲染器
SDL_RenderCopy(renderer, texture, NULL, NULL);
//显示出来:刷新渲染器
SDL_RenderPresent(renderer);
}
//典型的三明治结构,清理各项资源
SDL_DestroyTexture(texture);
SDL_FreeSurface(image);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
//退出image库
IMG_Quit();
//退出SDL
SDL_Quit();
return 0;
}
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
只要三行代码,是的,你没有看错,就是三
行代码,我当时都有点不可思议,那么进入正题吧。