DX11Win32窗口实现
-
X_jun师兄的DX11初始化可能涉及到Win32 初始化的方法目前在这里不做过多描述。
-
- 对此小萌新的我微微简单说一下,如果有不对的地方,请一定留言斧正!!!
- 对于Direct3D初始化,博客已经写的很详细了,这里不多说
- 下面都是代码了,因为笔记都注释在代码上了。
- 1、Main.cpp源文件
//可以定义一个_In_的宏,这个宏什么都不做.定义在" no_sal2.h "文件中
//为了编译系统在分析代码时发现缺陷用的
//LPSTR -> char*
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE prevInstance,
_In_ LPSTR cmdLine, _In_ int showCmd)
{
//这些参数不使用
//UNREFERENCED_PARAMETER避免编译器关于未引用参数的警告
UNREFERENCED_PARAMETER(prevInstance);
UNREFERENCED_PARAMETER(cmdLine);
UNREFERENCED_PARAMETER(showCmd);
// 允许在Debug版本进行运行时内存分配和泄漏检测
#if defined(DEBUG) | defined(_DEBUG)
// 检索或修改的状态_crtDbgFlag标志来控制调试堆管理器 (仅限调试版本) 的分配行为
// 通过设置位(打开),该应用程序可指示调试堆管理器执行特殊的调试操作,包括在应用
//程序退出时检查内存泄露并报告是否找到任何内存泄露、通过指定已释放的内存块应保留
//在堆的链接列表中来模拟内存不足情况,以及通过在每次分配请求时检查每个内存块来验证该堆的完整性。
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
//传入窗口的句柄
GameApp theApp(hInstance);
if (!theApp.Init())
return 0;
return theApp.Run();
}
- 2、d3dApp.cpp的初始化数据了(d3dApp.h中所有都有对应的解释)
//多继承,调用构造函数
GameApp::GameApp(HINSTANCE hInstance): D3DApp(hInstance)
{
}
//多继承调用(函数&类)
//字符串加 L 是通知编译器采用 UNICODE编码(双字节),防止中文乱码
//用wchar_t定义,加 L
D3DApp::D3DApp(HINSTANCE hInstance)
: m_hAppInst(hInstance),
m_MainWndCaption(L"DirectX11 Initialization"),
m_ClientWidth(1280),
m_ClientHeight(720),
m_hMainWnd(nullptr),
m_AppPaused(false),
m_Minimized(false),
m_Maximized(false),
m_Resizing(false),
m_Enable4xMsaa(true),
m_4xMsaaQuality(0),
m_pd3dDevice(nullptr),
m_pd3dImmediateContext(nullptr),
m_pSwapChain(nullptr),
m_pDepthStencilBuffer(nullptr),
m_pRenderTargetView(nullptr),
m_pDepthStencilView(nullptr)
{
ZeroMemory