分类: LINUX
2006-05-26 11:11:31
SDL系列教程之(五):扩展函数库的使用
作者:akinggw
朋友们,大家早上好!
经过这两天的观察,我发现我们的SDL系列文章受到了很大的关注,在此,我要在这里对所有关心我们栏目的朋友表示感谢,如果你有什么好的建议或想法,请来信告诉我。 .
在上一节内容中,我们讲解了如何在屏幕上显示位图格式的图象。但现在的游戏中并不使用位图。这是因为它有一个致命的缺点,那就是体积过大。
如果我们将一幅图象转化成bmp和jpg两种格式,你会发现他们的体积差别是那么的大,bmp文件的体积可能是jpg文件的几十倍。
文件过大就为我们带来了一个问题,当我们做一个游戏时,可能有成千上万张图片,如果全部为BMP格式。一个很小的游戏可能也需要几张光盘来存储,显然这是不实际的。而采用压缩格式,我们可能只需要一张光盘就可以了。
当然JPG文件也有它的一个缺点,那就是图象由于压缩的关系,可能会出现图象失真。但这在游戏中是可能忽视不计。
好,下面我们就来讲解如何显示JPG等压缩图象。
首先,我们需要下载一个扩展函数库,你可以到下面的地址下载:
http://www.libsdl.org/projects/SDL_image/
解压后,文件包含3个部分:头文件,静态库文件和动态库文件。
将它的头文件拷贝到VC的SDL头文件下,SDL的路径大概为:C:Program FilesMicrosoft Visual StudioVC98IncludeSDL.
然后将静态库文件(.lib)拷贝到VC的LIB目录下,LIB的路径大概为:C:Program FilesMicrosoft Visual StudioVC98Lib.
最后将动态库文件(.dll)全部拷贝到系统目录下,系统目录大概为:C:WINDOWSSYSTEM32.
新建一个SDL项目,打开“Project”->”Settings”
在“link”表下的”Object/library modules”中粘贴:
SDL_image.lib
注意SDL_image.lib应在SDL.lib ,SDLmain.lib的后面。
设置到这里就基本完成。
打开我们前面的项目,在源代码文件中添加下面头文件:
#include "SDL/SDL_image.h"
修改我们的导入位图函数:
/* 导入图象*/
SDL_Surface *load_image( char *filename )
{
//将图象暂时存储在这里
SDL_Surface* loadedImage = NULL;
//存储最佳的图象
SDL_Surface* optimizedImage = NULL;
//导入图象
loadedImage = IMG_Load ( filename );
//如果导入图象不为空
if( loadedImage != NULL )
{
//建立最佳的图象
optimizedImage = SDL_DisplayFormat( loadedImage );
//释放老的图象
SDL_FreeSurface( loadedImage );
}
//返回最佳的图象
return optimizedImage;
}
将函数中的SDL_LoadBMP函数改为IMG_Load函数。
它是扩展库中的一个导入图象的函数,支持的图象格式有BMP, PNM, XPM, LBM, PCX, GIF, JPEG, TGA 和PNG。
其它的代码不用改动,最后,你可以显示一幅JPG图象试试。
我得到的图象显示结果如下:
关于更多内容请访问金桥科普网站( )游戏开发栏目,如果你需要游戏开发方面的书籍请参考金桥书城游戏频道( )。 如果你在阅读本篇文章时有什么好的建议请来信给我,我的E_mail: akinggw@126.com. 如果你在使用SDL时有什么问题,请到金桥科普网站( )游戏开发栏目,我将详细地为你解答。
下一章中,我们将讲解如何处理键盘事件。