您现在的位置是:首页 >技术交流 >DirectX12环境配置(1)网站首页技术交流

DirectX12环境配置(1)

智商偏低 2024-06-26 14:23:48
简介DirectX12环境配置(1)

开发环境:visual studio 2022 

第一种配置DirectX12环境得方式。首先创建一个c++得空项目,然后创建一个main.cpp文件。把下面这串代码放进去,先不用管这串代码什么意思,后面会逐行逐句得讲解,因为我们创建得是空项目,默认就是控制台项目,我们需要将项目改成窗体项目,在属性-》连接器-》系统选项里面更改为窗口项目就可以了。

#pragma comment(lib,"d3dcompiler.lib")
#pragma comment(lib, "D3D12.lib")
#pragma comment(lib, "dxgi.lib")
#include <Windows.h>
#include <d3d12.h>
#include <dxgi1_6.h>

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<int>(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 Kits10Include10.0.19041.0shared

C:Program Files (x86)Windows Kits10Include10.0.19041.0um两个文件夹(注意10.0.19041.0是我电脑上面的版本,大家的可能不一样),最后点击确定。
2.点击库目录,添加相应的库,我们需要添加的库文件夹为:

C:Program Files (x86)Windows Kits10Lib10.0.19041.0umx64

然后点击确定就可以了

3.添加了库目录,我们还需要添加附加依赖项,所以选择链接器,然后选择输入,最后点击附加依赖项,输入d3d12.lib、dxgi.lib和d3dcompiler.lib设置好了就可以点击确定了。

将上面环境配置好之后,同样将控制台项目更改为窗体项目,将上面这串代码复制进去,能运行就说明环境配置好了。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。