织梦CMS - 轻松建站从此开始!

罗索

SDL 图像

落鹤生 发布于 2010-03-06 21:10 点击:次 
本教程相当简单,简短,有趣。我将向你介绍如何不再使用那些令人讨厌的位图(BMP)文件,因为他们太大了也不支持alpha透明,然后开始为你的那些表面使用其他文件格式(我个人比较喜欢PNG)。
TAG:

翻译声明:
    本文来自
Dev Hub

本课原文地址:http://www.sdltutorials.com/sdl-image/

本教程相当简单,简短,有趣。我将向你介绍如何不再使用那些令人讨厌的位图(BMP)文件,因为他们太大了也不支持alpha透明,然后开始为你的那些表面使用其他文件格式(我个人比较喜欢PNG)。如果你还没读过我的“SDL 坐标和块复制”这课,还是现在就去看看吧。我们就从那篇教程开始,修改CSurface类的一个OnLoad()函数。

首先,你需要先下载SDL_image,可以从SDL的官网获取最新版本。你也可以从其中的“Libraries”章节下载这个库,就在SDL的主页上。如果你不想为此麻烦,我提供的SDL包对于大多数SDL初学者都很有帮助,里面包含了SDL_image和其他一些有用的库。一定要保证其头文件和你的SDL头文件在同一目录下,还有库文件也要和你的SDL库文件路径一致,这会省去很多麻烦。

先打开你的工程,到连接器设置下。在SDLmain后面添加SDL_image,如下:

mingw32
SDLmain
SDL_image
SDL

如果你忘了怎么找到这些设置,还是希望你复习一下“SDL课程基础”来温习一下连接器这块。
首先,打开CSurface.h,然后我们就可以包括更多的头文件了:

#ifndef _CSURFACE_H_
#define _CSURFACE_H_

#include <SDL.h>
#include <SDL_image.h>

 
完成至此,打开CSurface.cpp,找到OnLoad函数。目前,我们的代码如下:

SDL_Surface* CSurface::OnLoad(char* File) {
    SDL_Surface* Surf_Temp = NULL;
    SDL_Surface* Surf_Return = NULL;

    if((Surf_Temp = SDL_LoadBMP(File)) == NULL) {
        return NULL;
    }

    Surf_Return = SDL_DisplayFormat(Surf_Temp);
    SDL_FreeSurface(Surf_Temp);

    return Surf_Return;
}


这里要做两点改变,首先是把SDL_LoadBMP改成IMG_Load。其次,把SDL_DisplayFormat改成SDL_DisplayFormatAlpha。还记得我说过BMP文件不支持alpha通道的吧?但是,PNG却支持!如果你想留住alpha通道,那就需要用SDL_DisplayFormatAlpha来代替SDL_DisplayFormat。如此一来,我们的代码就成了这个样子了:

SDL_Surface* CSurface::OnLoad(char* File) {
    SDL_Surface* Surf_Temp = NULL;
    SDL_Surface* Surf_Return = NULL;

    if((Surf_Temp = IMG_Load(File)) == NULL) {
        return NULL;
    }

    Surf_Return = SDL_DisplayFormatAlpha(Surf_Temp);
    SDL_FreeSurface(Surf_Temp);

    return Surf_Return;
}


最后,别忘了改变CApp_OnInit.cpp里的测试表面要加载的文件名:

if((Surf_Test = CSurface::OnLoad("myimage.png")) == NULL) {
    return false;
}

这样我们就完成了!我说过的很短的吧。试试编译下,然后试试不同格式的文件。SDL_image支持的一般格式有:

BMP (Go figure)
GIF
PNG
JPG
PCX
TIF
and others…

请注意下现在需要的和SDL图像相关的附加DLL文件(大概有5个)。保证这些都包含在你的工程里了。你可以从此下载这些DLL文件,http://www.libsdl.org/projects/SDL_image/ 在Binary -> Win32 -> 下的Win32 Zip(而不是VC8)(译注:原作者用的是CB,用微软VS的要用这个。)。并且这些DLL文件也包含在工程文件下面。

本教程来自Blommis的创意。

SDL图像 —— 课程文件:
Win32:
Zip, Rar
Linux: Tar (Thanks Gaten), Binary (Thanks Thomas) ,一切解释权归原作者。我只是出自个人爱好,才翻译了本文。因为本人也是个初学者,而且英语水平有限,错误难免,望各路高手指正。

(Dev Hub)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201003/8688.html]
本文出处:sdltutorials.com 作者:Dev Hub
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容