使用DirectX让进行Alpha混合的子图形移动(精灵动画)

使用DirectX让进行Alpha混合的子图形移动(精灵动画)
 最近我在二维动画的问题上总是不得其解。因为没有进行Alpha混合的二维动画,在外表上一定会很难看。所以我没有办法,只好四处求解。但是好像大家都没有给出我满意的答案。还好,我在一个源码库(http://www.hackchina.com/)中搜索到了一个示例程序,这个示例程序做得真的好,很逼真。所以我一定要把它拿来进行剖析。在了解到了我必须抛弃以前的surface结构后,我毅然决然地使用了例子中的sprite结构体。这样好了,我左试右试,最后终于成功了。为此我自己又做了一个tga图,和自己用Easy Paint Tool SAI修改的一个tga图。这样的话,我的演示程序就非常得好看了。

 下面就是我的MainFrame.cpp文件:
 

Code:
  1. /*---------------------------------------------------------------------------  
  2. 蒋轶民制作 E-mail:jiangcaiyang123@163.com  
  3. 文件名:MainFrame.cpp  
  4. 作用:子图像和Alpha融合的主框架  
  5. ----------------------------------------------------------------------------*/  
  6. /*--------------------------------------------------------------------------*/  
  7.   
  8. // 头文件   
  9. #include<windows.h>   
  10. #include<d3d9.h>   
  11. #include<d3dx9.h>   
  12. #include<stdio.h>   
  13.   
  14. // 库文件   
  15. #pragma comment( lib, "d3d9.lib")   
  16. #pragma comment( lib, "d3dx9.lib")   
  17.   
  18. // 定义的宏   
  19. #define JCLASSNAME  "优化的程序"   
  20. #define JCAPTION  "程序演示"   
  21. #define WINDOW_WIDTH 320   
  22. #define WINDOW_HEIGHT 320   
  23. #define FULLSCREEN  FALSE// 全屏非全屏的标识符   
  24. #define SAFE_RELEASE( p ) if ( p ) p->Release(); p = NULL;   
  25.   
  26. // 调整编译器设置   
  27. #pragma warning( disable: 4100 )   
  28.   
  29. #if FULLSCREEN     // 全屏非全屏的设置   
  30. #define WINDOW_STYLE WS_EX_TOPMOST | WS_POPUP | WS_VISIBLE   
  31. #else   
  32. #define WINDOW_STYLE WS_CAPTION | WS_SYSMENU   
  33. #endif   
  34.   
  35. /*----------------------------------------------------------------------------*/  
  36.   
  37. // 全局变量   
  38. LPDIRECT3D9 g_JD3D = NULL;// D3D结构体   
  39. LPDIRECT3DDEVICE9 g_JDevice = NULL;// D3D装置结构体   
  40. LPD3DXFONT g_FPSFont = NULL;// 指向FPS字体的指针   
  41. RECT g_FPSFontPos = { WINDOW_WIDTH - 100, WINDOW_HEIGHT - 15,    
  42. WINDOW_WIDTH, WINDOW_HEIGHT};// FPS所在的矩形框   
  43. INT g_FrameCount = 0;// 帧的计数器   
  44. INT g_lastTime = 0;// 记录上一秒的时间   
  45. INT g_currentTime = 0;// 记录当前的时间   
  46. CHAR g_FPSstr[25] = { 0 };// 记录当前帧率的字符串   
  47. IDirect3DSurface9* g_surface = NULL;// 平面的指针   
  48.   
  49. /*----------------------------------------------------------------------------*/  
  50. // 子图像和Alpha融合的头文件   
  51. #include "AlphaBlend.h"   
  52.   
  53. /*----------------------------------------------------------------------------*/  
  54. // 函数的声明   
  55. BOOL InitializeD3D( 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值