本系列文章由 net_assassin 整理编写,转载请注明出处。
http://blog.csdn.net/net_assassin/article/category/1100363
作者:net_assassin 邮箱: net_assassin@hotmail.com 期待着与志同道合的朋友们相互交流
到目前为止,我们一直是使用单一的位图图像来创建、操纵及绘制精灵。这对于学习精灵编程是良好的起点,但其还不够有效率。例如,如果要使用这种技术来做动画,那么游戏就必须保存多个纹理(一帧一个),这样既慢又乏味。在单一的平铺了图片单元的位图图像中编排动画的各个帧,这种处理动画的方式要好得多。
使用精灵表
精灵表,就是一个包含了多个图片单元的平铺的图像。
我们需要做的就是,算出图片单元的左上角在位图图像中为止,然后从图像中按照精灵的宽度和高度复制出一个源矩形来。
left = (current frame %number of columns)*sprite width
top= (current frame / number of columns)*sprite height
使用这个技术绘制单个帧,我们可以编写一个能绘制精灵表中任何一帧的函数!为了让这个函数尽可能可重用,必须将能描述精灵的所有属性传递进来。
void Sprite_Draw_Frame(LPDIRECT3DTEXTURE9 texture, int destx, int desty, int framenum, int framew, int frameh, int columns)
{
D3DXVECTOR3 position( (float)destx, (float)desty, 0 );
D3DCOLOR white = D3DCOLOR_XRGB(255,255,255);
RECT rect;
rect.left = (framenum % columns) * framew;
rect.top = (framenum / columns) * frameh;
rect.right = rect.left + framew;
rect.bottom = rect.top + frameh;
spriteobj->Draw( texture, &rect, NULL, &position, white);
}
draw函数最后的颜色参数如果传入的是一个带alpha成分的颜色可以让精灵以alpha混合的形式淡入淡出!要想实现这一效果,D3DCOLOR_XRGB 宏替换为 D3DCOLOR_RGBA.
使用定时器
只要有创意的使用定时器,就可以设计出一个以任何其他的帧速率来显示动画的函数。GetTickCount()函数返回的毫秒数可用于计时。
void Sprite_Animate(int &frame, int startframe, int endframe, int direction, int &starttime, int delay)
{
if ((int)GetTickCount() > starttime + delay)
{
starttime = GetTickCount();
frame += direction;
if (frame > endframe) frame = startframe;
if (frame < startframe) frame = endframe;
}
}
爆炸精灵
分享到:
相关推荐
这资源是与博文中讲解内容配套的源代码。3D模型渲染部分
directx11 游戏编程入门 PDF
DirectX 10 3D游戏编程入门.pdf
DirectX+10+3D游戏编程入门
很好的directx游戏编程入门教程,特别适用于初学者。下下来看看吧!
DirectX游戏编程,PDF文档,方便大家学习
游戏编程入门 directx C++ 课件 代码 第二2课游戏编程入门 directx C++ 课件 代码 第二2课游戏编程入门 directx C++ 课件 代码 第二2课
最新英文版DirectX11,与DirectX9差别较大,C++语言描述, 适合新手入门及已入门查阅。
DirectX.11游戏编程入门
DirectX 10 3D游戏编程入门.pdf
DirectX11游戏编程入门(中文版)(word+pdf)
DirectX3d 游戏编程入门 3D红龙 DirectX3d 游戏编程入门 3D红龙
《游戏编程入门(原书第3版)》涵盖了使用DirectX编写代码创建2D和3D游戏所需的所有技能,而读者只需基本掌握C++语言即可学会游戏的每个元素都按部就班地在书中讲授——从学习如何创建简单的Windows程序,到使用关键的...
这是Jim Adams的《Programming Role Playing Games with DirectX》第二版的中文版的第二部分。一共两部分。
DirectX游戏开发入门.pdf
游戏编程入门 directx C++ 课件 代码 第二2课游戏编程入门 directx C++ 课件 代码 第二2课
本书首先介绍Windows和DirectX编程,然后快速介绍游戏编程的工具箱,包括使用C++和DirectX开发游戏所需的所有基础知识。读者将学习到把思想转化为现实所需的技术,比如2D、3D图形的绘制、背景卷动、处理游戏输入、...