第3课 - 使用SDL扩展库加载更多格式的图片 · 在Eclipse中使用SDL扩展库


更新时间:2012年7月1日


在本节课中,你将学会安装SDL_image扩展库。如果你掌握了安装这一个扩展库的方法,那么你将能够安装所有的扩展库。

以下是在不同情况下,安装SDL_image的方法:
使用Ubuntu的用户
你又要使用包管理器了。打开后搜索libsdl-image1.2-dev,这是SDL_image的开发包。如果找到了,单击它开始安装。

如果你要安装SDL_ttf,你得搜索libsdl-ttf2.0-dev

如果你要安装SDL_mixer,你得搜索libsdl-mixer1.2-dev

等等。
使用基于RPM发行版的用户
您需要SDL_image RPM开发包, 你可以从此处下载

向下滚动到Binary部分,下载Linux开发包。
接下来启动RPM,使用它完成安装。
使用apt-get或者yum commands的用户
您在第1课中已经安装好了SDL_image, SDL_ttf以及SDL_mixer。


 1)现在,打开你的SDL工程并进入项目属性

2)中,在SDL的后面附加上如下代码:

SDL_image

.

如果你想连接SDL_ttf,那么你就加上:

SDL_ttf

如果你想连接SDL_mixer,那么你就加上:

SDL_mixer

等等。

7)要使用SDL_image,确保先包含它的头文件:

#include "SDL/SDL_image.h"

如果你在安装SDL_ttf,你就这样写:

#include "SDL/SDL_ttf.h"

如果你在安装SDL_mixer,你就这样写:

#include "SDL/SDL_mixer.h"

等等。

现在扩展库就安装好了。

现在你可以使用SDL_image的函数了。

其中,你最想了解的应该是IMG_Load()函数。
SDL_Surface *load_image( std::string filename ) 
{
    //加载的图像
    SDL_Surface* loadedImage = NULL;
    
    //优化后的图像
    SDL_Surface* optimizedImage = NULL;
    
    //使用SDL_image加载图像
    loadedImage = IMG_Load( filename.c_str() );
    
    //如果图像加载成功
    if( loadedImage != NULL )
    {
        //创建一个优化后的图像
        optimizedImage = SDL_DisplayFormat( loadedImage );
        
        //释放原先加载的图像
        SDL_FreeSurface( loadedImage );
    }
    
    //返回优化后的图像
    return optimizedImage;
}
这是上一课中的图像加载函数的修改版。你可以看到,IMG_Load()函数与SDL_LoadBMP()函数的功能看上去完全相同,但实际上有一个很大的不同点,就是IMG_Load()可以加载BMP, PNM, XPM, LBM, PCX, GIF, JPEG, TGA 和 PNG 格式的文件。

从这节课开始,PNG将会是主要用到的图像格式。PNG有着极佳的无损压缩特性。

我十分推荐你下载SDL_image的文档并将它放在手边,以方便查阅。你可以从此处下载

本课所用的多媒体文件和源代码可从此处下载

下一课:事件驱动编程