使用DirectX让子图形移动(精灵动画)

使用DirectX让子图形移动(精灵动画)
  这是我今天从这本书上学的,这本书的名字叫做《Beginning DirectX9》这本书是英文的。好在我还看得懂英文。书上给了很多DirectX编程的初学者怎样进行DirectX编程。今天我看到了Sprite(子图形,又叫精灵图形)这一章,这一章讲了怎样使用DirectX进行精灵图形的绘制。书上的内容还是比较通俗易懂的。但是有一个缺陷,就是没有那位高人有这本书的光碟。所以我们国内的读者只好看pdf文件了。我在研究这本书的时候好在有些基础,要不然在4个月前,我根本就不知道怎样对书上的错误进行更正。正如我上面所说,书还是有很多缺陷的。这就要我们读者进行更正喽。在今天一个多小时的努力和我的基本框架的基础上,我终于把书上要显示的效果实现了。下面就是我的代码,注释是我翻译和添加的,很好懂。如果还是不懂的话,可以单独地问我或是跟帖,我会耐心地回答大家的问题的。

 首先是我的MainFrame.cpp文件。
 

 

 

 

 

 

Code:
  1. /*---------------------------------------------------------------------------  
  2. 蒋轶民制作 E-mail:[email protected]  
  3. 文件名:MainFrame.cpp  
  4. 作用:载入子图像(sprite)  
  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 640   
  22. #define WINDOW_HEIGHT 480   
  23. #define FULLSCREEN  FALSE// 全屏与否的开关   
  24. #define SAVE_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 };// 记录当前帧率的字符串 <
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值