VS2022 + DirectX9 开发环境搭建

Direct9虽然已经很老了,但是,还是遇到很多它开发出来的游戏还在运行,所以,它的兼容性毋庸置疑,从WinXP到Win11都有它的身影,另外,Direct 自身包含了2D和3D的相关功能,着重区分GDI渲染方式,加深对direct的了解,就从经典的Direct9开始开发了解。

环境搭建

主要环境为
操作系统: Win10
IDE: VS2022
Direct SDK: DXSDK_Jun10
开发语言: C++

VS2022安装和工作负荷选择

首先根据我所提供的资源[VS2022下载地址]进行选择下载:

然后下一步下一步
最重要的地方是选择需要什么样的工作负荷,截图如下:


主要选择 使用C++的桌面开发就可以了。其他都是副选(C++的游戏开发)

Direct SDK 安装

下载我提供的资源[DXSDK_Jun10.exe下载地址]进行下载然后双击安装


选择下一步


然后 ,选择 accept(同意)选项


是否改善,选择否即可


然后,选择目录即可(尽量默认路径)


直接下一页,让它开始安装


这个步骤,选择让它安装,要不然,就安装不了

选择之后,它就会自己安装


基础安装完毕

关闭窗口后,它继续安装

完成后,就可以了

Direct SDK 安装失败如何处理

可能会出现这样或那样的异常情况

实际上这个SDK我们只需要用到它的帮助文档、示例,以及C++头文件和相关的lib库文件,所以,可以直接拷贝这个SDK文件放入到指定目录下即可

下载[Microsoft DirectX SDK (June 2010).zip 下载地址]内的资源,解压到此文件夹即可.

另外还需要设置环境变量

点击高级系统设置

点击环境变量按钮

然后,填入相关环境变量信息,然后,点击确定

具体内容如下:

DXSDK_DIR
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\

Direct9 SDK 目录详情

默认会在这个路径下

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)

大致如下所示

具体需要关注的是以下几个文件夹

  1. 帮助文档,里面有很详细的帮助文档
  2. 头文件,后面需要引用的C++头文件
  3. 相关的链接库,也是需要C++引用的分为86和64版本
  4. 最后是一些官方示例,可以作为参考和学习

简单示例

为了证明环境是否正常来用一个案例验证一下

新建C++项目

打开VS2022,新建Windows桌面向导


配置基础信息,点创建


选择桌面应用.exe,点空项目,点确定

就转到了默认项目窗口

开始添加一个项目文件main.cpp


点击添加即可

Direct9的 示例代码

#include <windows.h>
#include <d3d9.h>
#include <d3dx9.h>

// 窗口类名和标题
const wchar_t CLASS_NAME[] = L"DirectX9 Window Class";
const wchar_t WINDOW_TITLE[] = L"DirectX9 简单示例";

// 全局变量
HWND hWnd;                  // 窗口句柄
LPDIRECT3D9 d3d;            // Direct3D 对象
LPDIRECT3DDEVICE9 d3dDevice;// Direct3D 设备

// 三角形顶点结构(位置 + 颜色)
struct Vertex {
    float x, y, z;          // 位置
    DWORD color;            // 颜色(ARGB)
};
#define D3DFVF_VERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE) // 顶点格式

// 窗口过程(消息处理)
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    case WM_PAINT: {
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hWnd, &ps);
        EndPaint(hWnd, &ps);
    }
                 return 0;
    }
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

// 初始化窗口
bool InitWindow(HINSTANCE hInstance, int nCmdShow) {
    // 注册窗口类
    WNDCLASS wc = {};
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = CLASS_NAME;
    wc.style = CS_HREDRAW | CS_VREDRAW;

    if (!RegisterClass(&wc)) return false;

    // 创建窗口
    hWnd = CreateWindowEx(
        0,
        CLASS_NAME,
        WINDOW_TITLE,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 800, 600,
        NULL, NULL, hInstance, NULL
    );

    if (hWnd == NULL) return false;

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
    return true;
}

// 初始化 Direct3D
bool InitD3D() {
    // 创建 Direct3D 对象
    d3d = Direct3DCreate9(D3D_SDK_VERSION);
    if (!d3d) return false;

    // 获取窗口客户区大小
    RECT rc;
    GetClientRect(hWnd, &rc);
    int width = rc.right - rc.left;
    int height = rc.bottom - rc.top;

    // 设备参数设置
    D3DPRESENT_PARAMETERS d3dpp = {};
    d3dpp.Windowed = TRUE;                  // 窗口模式
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; // 交换链模式
    d3dpp.hDeviceWindow = hWnd;             // 渲染窗口
    d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8; // 后缓冲区格式
    d3dpp.BackBufferCount = 1;              // 后缓冲区数量
    d3dpp.BackBufferWidth = width;          // 宽度
    d3dpp.BackBufferHeight = height;        // 高度
    d3dpp.EnableAutoDepthStencil = TRUE;    // 启用深度测试
    d3dpp.AutoDepthStencilFormat = D3DFMT_D16; // 深度缓冲区格式

    // 创建 Direct3D 设备
    HRESULT hr = d3d->CreateDevice(
        D3DADAPTER_DEFAULT,                // 默认显卡
        D3DDEVTYPE_HAL,                    // 硬件加速
        hWnd,
        D3DCREATE_HARDWARE_VERTEXPROCESSING, // 硬件顶点处理
        &d3dpp,
        &d3dDevice
    );
    if (FAILED(hr)) return false;

    // 设置渲染状态(关闭光照,使用顶点颜色)
    d3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
    return true;
}

// 渲染函数
void Render() {
    if (!d3dDevice) return;

    // 清屏(黑色背景)
    d3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);

    // 开始渲染
    if (SUCCEEDED(d3dDevice->BeginScene())) {
        // 三角形顶点数据(位置和颜色)
        Vertex vertices[] = {
            { 0.0f,  0.5f, 0.0f, D3DCOLOR_XRGB(255, 0, 0) },  // 上顶点(红色)
            { 0.5f, -0.5f, 0.0f, D3DCOLOR_XRGB(0, 255, 0) },  // 右下(绿色)
            { -0.5f, -0.5f, 0.0f, D3DCOLOR_XRGB(0, 0, 255) }  // 左下(蓝色)
        };

        // 设置顶点格式和数据
        d3dDevice->SetFVF(D3DFVF_VERTEX);
        d3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, vertices, sizeof(Vertex));

        // 结束渲染
        d3dDevice->EndScene();
    }

    // 交换缓冲区(显示渲染结果)
    d3dDevice->Present(NULL, NULL, NULL, NULL);
}

// 释放资源
void Cleanup() {
    if (d3dDevice) d3dDevice->Release();
    if (d3d) d3d->Release();
}

// 程序入口
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    // 初始化窗口
    if (!InitWindow(hInstance, nCmdShow)) return 0;

    // 初始化 Direct3D
    if (!InitD3D()) {
        MessageBox(hWnd, L"Direct3D 初始化失败", L"错误", MB_OK);
        return 0;
    }

    // 消息循环
    MSG msg = {};
    while (msg.message != WM_QUIT) {
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else {
            // 渲染
            Render();
        }
    }

    // 释放资源
    Cleanup();
    return 0;
}

VS2022 Direct 项目设置

选择刚才新建的项目右键属性,打开属性页

选择C++ 目录页

  1. 可执行目录修改为
$(DXSDK_DIR)Utilities\bin\x64;$(VC_ExecutablePath_x64);$(CommonExecutablePath)
  1. 包含目录修改为
$(DXSDK_DIR)Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
  1. 库目录修改为
$(DXSDK_DIR)Lib\x64;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)

修改后是这样的

接下来修改 链接器->输入->附加依赖项

dxerr.lib;dxguid.lib;d3dx9d.lib;d3d9.lib;winmm.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)

开始运行项目

按F5 或者 点击 本地Windows调试器就可以运行起来了

结果如下:

至此一个常规的Direct9的环境就部署好了,当然DirectX其他系列部署方式都差不多。

git仓库

https://github.com/kesshei/direct9Demo
https://gitee.com/kesshei/direct9Demo

资源

VS2022下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/?cid=learn-onpage-download-install-visual-studio-page-cta
DXSDK_Jun10.exe下载地址: https://www.microsoft.com/en-us/download/details.aspx?id=6812 
Microsoft DirectX SDK (June 2010).zip 下载地址:https://pan.baidu.com/s/1xAHwutm-eAf5-_UyLYz5cQ?pwd=43is
posted @ 2025-10-16 10:56  蓝创精英团队  阅读(44)  评论(0)    收藏  举报  来源