本文是 系列笔记DirectX部分的第2篇,上一篇参见
逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架
这个示例增加了一些实际的内容,首先是绘制一个颜色随机变幻的彩色立方体,其二是显示FPS
我录制了一段运行时刻的视频如下(若无法显示请点此跳转)
如果不能播放视频,请参考以下截图
因为GIF动态图片只能播放第一帧,所以就分别截取了几个时刻的静态帧图片
以上都是颜色填充模式,按下数字键‘1’后切换到线框模式
按下数字键‘2’切换回颜色填充模式。这个示例比较简单,没有涉及到高级的内容,如果能够理解01篇的话,这个示例应当不算太难。
我们来看看,原始的App类现在改成什么样了
#include <d3d9.h>
#include <d3dx9.h>
#include <Windows.h>
struct CUSTOMVERTEX
{
FLOAT x, y, z;
DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
class App
{
public:
App();
~App();
public:
void Create(HWND hwnd);
void Render(void);
void CleanUp(void);
void InitObjects(void);
void Rotate(void);
double GetFPS();
private:
D3DPRESENT_PARAMETERS d3dpp;
LPDIRECT3DDEVICE9 device;
ID3DXFont* pFont;
char szFPS[32];
LPDIRECT3DVERTEXBUFFER9 pVertexBuffer = NULL; //顶点缓冲区对象
LPDIRECT3DINDEXBUFFER9 pIndexBuffer = NULL; // 索引缓存对象
RECT rect;
RECT clientRect;
int width, height;
double fps;
int frameCount;
DWORD tickCurrent;
DWORD tickLast;
};
关于FVF(灵活顶点格式)可以参考这篇文章
比较上述代码可以发现,App类增加了一些成员变量和3个新的方法。
ID3DXFont* pFont; //将用作文字输出
char szFPS[32]; //存储用于输出的字符串
余下变量意义正如其名,例如