开发环境:visual studio 2022
第一种配置DirectX12环境得方式。首先创建一个c++得空项目,然后创建一个main.cpp文件。把下面这串代码放进去,先不用管这串代码什么意思,后面会逐行逐句得讲解,因为我们创建得是空项目,默认就是控制台项目,我们需要将项目改成窗体项目,在属性-》连接器-》系统选项里面更改为窗口项目就可以了。
#pragma comment(lib,"d3dcompiler.lib")
#pragma comment(lib, "D3D12.lib")
#pragma comment(lib, "dxgi.lib")
#include
#include
#include
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 创建窗口
HWND hwnd;
WNDCLASSEX wc = {};
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.lpszClassName = L"DirectX12Sample";
RegisterClassEx(&wc);
RECT windowRect = { 0, 0, 800, 600 };
AdjustWindowRect(&windowRect, WS_OVERLAPPEDWINDOW, FALSE);
hwnd = CreateWindowEx(0, L"DirectX12Sample", L"DirectX 12 Sample", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
windowRect.right - windowRect.left, windowRect.bottom - windowRect.top, NULL, NULL, hInstance, NULL);
// 初始化 DirectX 12
ID3D12Device* pDevice;
ID3D12CommandQueue* pCommandQueue;
//HRESULT WINAPI D3D12CreateDevice(
// _In_opt_ IUnknown * pAdapter,
// D3D_FEATURE_LEVEL MinimumFeatureLevel,
// _In_ REFIID riid, // Expected: ID3D12Device
// _COM_Outptr_opt_ void** ppDevice);
D3D12CreateDevice(nullptr, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&pDevice));
D3D12_COMMAND_QUEUE_DESC queueDesc = {};
queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
pDevice->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&pCommandQueue));
// 显示窗口
ShowWindow(hwnd, nCmdShow);
// 主消息循环
MSG msg = {};
while (true)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
if (msg.message == WM_QUIT)
break;
}
// 渲染逻辑
// 在此处执行绘制命令
// 交换前后缓冲区
// pCommandQueue->Present();
// 在这里添加帧同步逻辑,确保帧速率
}
// 清理资源
// 释放 DirectX 12 对象
return static_cast(msg.wParam);
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}
第二种配置方式是通过visual studio来配置。
首先还是跟上面一样,先创建一个空项目。然后在属性里面进行配置。
1.选择VC++目录,然后点击包含目录,包含:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared和
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um两个文件夹(注意10.0.19041.0是我电脑上面的版本,大家的可能不一样),最后点击确定。
2.点击库目录,添加相应的库,我们需要添加的库文件夹为:
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64。
然后点击确定就可以了
3.添加了库目录,我们还需要添加附加依赖项,所以选择链接器,然后选择输入,最后点击附加依赖项,输入d3d12.lib、dxgi.lib和d3dcompiler.lib,设置好了就可以点击确定了。
将上面环境配置好之后,同样将控制台项目更改为窗体项目,将上面这串代码复制进去,能运行就说明环境配置好了。