- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SDL第二课画面的载入和块传输的优化.pdf
/SDL_tutorials/lesson02/index.php
画面的载入和位图传输的优化
最后更新时间:2009/12/28
在上一课,我们已经可以在屏幕上显示一张图片。接下来,我们将采用更有效的方
法载入画面和传输位图。
//The headers
#include SDL/SDL.h
#include string
/*这是这个程序的头文件。包含SDL.h 头文件明显的是因为我们要使用SDL 的函数,
使用string 头文件是因为……呃,只是比起char*来,我更喜欢std::string 。*/
//The attributes of the screen
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;
/*这些是屏幕的各种属性。我完全相信你可以猜出SCREEN_WIDTH 和
SCREEN_HEIGHT 表示的是什么。SCREEN_BPP 是像素的位数。在所有的教程里,我们
使用32 位色。*/
//The surfaces that will be used
SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;
/*这些是将要使用的3 个图片的声明。background明显将作为背景图片, message
是一个显示“Hello ”的位图,而 screen 明显是一个屏幕。
牢记:如果指针没有指向目标时,最好的方法是让它们指向NULL 。*/
SDL_Surface *load_image( std::string filename )
{
// 临时储存载入的图片
SDL_Surface* loadedImage = NULL;
紫翼魔狼 第 1 页 2010-02-08
/SDL_tutorials/lesson02/index.php
//将使用的优化的图片
SDL_Surface* optimizedImage = NULL;
/*这里,我们使用图片加载函数。这个函数用来载入图片,返回一个指针,用来优
化加载图像版本。参数filename是图片加载的路径,loadedImage是我们加载图片时的
画面。optimizedImage是我们将要使用的画面。*/
//Load the image
loadedImage = SDL_LoadBMP( filename.c_str() );
/*首先用SDL_LoadBMP()加载图片。但是不能立即使用,因为位图是24 位,而屏幕
是32 位的。把格式不同的画面加载到另外一个画面上并不是一个好的方法,因为SDL
必须在程序运行中实时的转化格式,导致运行缓慢。*/
//If nothing went wrong in loading the image
if( loadedImage != NULL )
{
//Create an optimized image
optimizedImage = SDL_DisplayFormat( loadedImage );
//Free the old image
SDL_FreeSurface( loadedImage );
}
/*下一步,我们检查图片是否正确的载入,如果出错,loadedImage 将为NULL 。如
果图片载入正确,调用SDL_DisplayFormat()创建一个新版本的loadedImage,格式与屏
幕相同。我们这么做的原因是因为我们把不同格式的画面粘贴到另一个画面上,SDL 将
它们转化为相同的格式。每次传输位图的时候,创建转化后的画面会占用进程影响速度。
因此我们在加载画面时,转化画面的格式。当你想把画面显示到屏幕上时,画面已经转
化和屏幕同样的格式。这样SDL 就不需要进行实时转化了。所以,我们有两个画面,一
个之前加载的图片,一
文档评论(0)