免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1107 | 回复: 0
打印 上一主题 下一主题

SDL系列教程之(五):扩展函数库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-26 11:11 |只看该作者 |倒序浏览
SDL系列教程之(五):扩展函数库的使用
作者:akinggw
朋友们,大家早上好!
经过这两天的观察,我发现我们的SDL系列文章受到了很大的关注,在此,我要在这里对所有关心我们栏目的朋友表示感谢,如果你有什么好的建议或想法,请来信告诉我。
[email=我的email是akinggw@126.com]我的email是akinggw@126.com[/email]
.
在上一节内容中,我们讲解了如何在屏幕上显示位图格式的图象。但现在的游戏中并不使用位图。这是因为它有一个致命的缺点,那就是体积过大。
如果我们将一幅图象转化成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图象试试。
我得到的图象显示结果如下:



关于更多内容请访问金桥科普网站(
http://popul.jqcq.com
  )游戏开发栏目,如果你需要游戏开发方面的书籍请参考金桥书城游戏频道(
http://book.jqcq.com/category/1_70_740.html
)。 如果你在阅读本篇文章时有什么好的建议请来信给我,我的E_mail: akinggw@126.com. 如果你在使用SDL时有什么问题,请到金桥科普网站(
http://popul.jqcq.com
  )游戏开发栏目,我将详细地为你解答。

下一章中,我们将讲解如何处理键盘事件。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19671/showart_118363.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP