现代DX11系列教程:使用Windows SDK(C++)开发Direct3D 11.x
注意:
- 2.x.x和1.x.x的主要区别在于19章之后的代码有大幅修改。
- 若更新项目后渲染显示有问题,尝试删除Shaders/Cache文件夹
CSDN目前停更
QQ群号:727623616
欢迎大家来交流,以及项目有什么问题也可以在这里提出。
在Win10系统下,若安装cmake的时候添加了环境变量,则可以直接运行build_msvc.cmd
来生成项目并构建项目,完成后打开build文件夹可以找到解决方案,然后切换到Release x64就可以直接运行。
使用cmake-gui.exe
填写源码路径和构建路径,然后只需要关注下面一个变量:
WIN_SYSTEM_SUPPORT
:默认关闭,仅Win7用户需要勾选
然后就可以点Generate
生成项目,生成的解决方案位于build文件夹内,或者点Open Project
打开
打开CMake生成的项目,建议切换成Release x64。若要指定运行哪个项目,需要对项目右键-设为启动项。然后就可以生成并运行了
注意:
- 目前教程仅支持VS2017(或平台工具集v141)及更高版本,且必须使用Win10 SDK!
- 由于Assimp不支持Win32(x86),本项目仅支持64位系统
- Win7打开需要安装Service Pack 1以及KB2670838补丁
安装好xmake后,根据如下命令构建与编译项目
xmake f -p windows -a x64 -m debug/release
xmake
xmake build [target]
xmake run [target]
target
如下:
可以使用如下命令生成compile_commands.json
(推荐)
xmake project -k compile_commands
或者使用如下命令生成vs2019/2022项目
xmake project -k [vsxmake2019|vsxmake2022]
生成的二进制程序位于bin/debug
或者bin/release
中
项目代码库assimp
目前使用xrepo
进行包管理:
add_requires("assimp",{system = false })
语言:
- C++17
- HLSL Shader Model 5.0
目前项目使用了下述代码库或文件:
- ocornut/imgui:当前已经为这些项目使用ImGui:第7、10、15、16、17、20、23、30-39章。
- nothings/stb:使用其stb_image
- assimp/assimp:模型加载
- DirectXTex/DDSTextureLoader
- DirectXTex/WICTextureLoader
- DirectXTex/ScreenGrab
- DirectXTK/Mouse(源码上有所修改):不能和imgui同时使用
- DirectXTK/Keyboard(源码上有所修改):不能和imgui同时使用
作为教程演示项目,这里并不是以实现一个软引擎为目标。建议读者在跟随教程学习的同时要动手实践。
以项目31的程序(Release x64)为例,其文件结构应为:
Project 31
|----Model/ (挑出项目用到的模型)
|----Texture/ (挑出项目用到的纹理)
|----31 Shadow Mapping/ (此处命名自由发挥,比如bin)
|----31 Shadow Mapping.exe
|----imgui.ini
|----assimp-vc14*-mt.dll (从build/Assimp/bin/Release(或Debug)复制一份)
|----Shaders/
博客和项目维护不易,如果本系列教程对您有所帮助,希望能够扫码支持一下博主。
- 2024/10/11 Ver2.38.7
- 支持xmake生成项目(感谢Ligo)