(注:【D3D11游戏编程】学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~)
从上次绘制一个简单立方体的例子中,我们可以发现,即使是一个十分简单的程序,其代码长度也是相当的长。但实际上,大多数代码只是用于了Win32、D3D11的初始化,剩下的才是我们真正关心的绘制代码。一方面,这些代码妨碍我们直接关注核心部分, 另一方面,为了避免在后面每次创建新的程序时生硬地复制、粘贴这些初始化代码,我们这次创建一个简单的程序框架。这个框架通过面向对象的方式把Win32、D3D11初始化、Windows消息处理等这些固定代码封装了起来,以后可以重复利用它们。 这样在创建新的程序时,直接导入该框架,并编写核心程序即可。
1. 框架简介
刚开始时,我们的框架功能十分简单。在后面深入学习D3D11时,我们会不断往该框架中添加新的功能,使它逐渐地丰满起来。
新的框架主要包括如下内容:
1.1 主程序
这部分是该框架的核心部分,用于封闭Win32和D3D11中的固定代码,即初始化、消息处理等。类名为:WinApp,其定义如下:
class WinApp
{
public:
WinApp(HINSTANCE hInst, std::wstring title = L"D3D11学习程序框架", int width = 640, int height = 480);
~WinApp();
//基本内联成员函数
HINSTANCE AppInstance() const { return m_hInstance; }
HWND Window() const { return m_hWnd; }