前言
- 今天是2023年9月28日,明天就是中秋节了,先祝福大家中秋快乐!
- 时光飞逝,岁月如梭,大学四年一晃而逝,眨眼间我们即将毕业。毕业不是意味着要面对社会的险恶,也不是意味着要当打工社畜,而是意味着你必须回答一个问题:你想成为怎样的人?
- 或许是我觉醒的太晚了,我是个只会读书的书呆子,所以现在才问我自己这个问题。最近华为崛起势头正盛,我看了很多任正非的采访视频,感触很深。他说:必须要从基础科学抓起。他说:中国必须有人突破技术壁垒。他说:我们不做谁去做。
- 我立志为中国游戏发展奋斗终身。当然我没有“我不去做谁去做”那种舍我其谁的霸气,我只有一种奉献的自豪。我要一步一个脚印往游戏的最高峰去攀登。这样在年轻之时,我可以改变世界,可以尝试去建设我们的祖国!在年老之时,我可以在直播或录播平台将我的所学所知讲授给中国新一代的青年们,我可以影响一批人、改变一批人!
- 比我站的高的人不尽其数,但这并不影响我要去的地方。
- 我是一名普通的中国青年,如果你立志想从事游戏开发事业,可以跟我一起,打开新世界的大门。
本栏目学习路线
- 本栏目主要是学习DirectX 12培养三维图像开发能力。
- 本栏目将使用《DirectX 12 3D游戏开发实战》进行学习,大家可以买这本书看,这本书就是龙书,我在某东上面买的差不多120。
- 编程最重要的还是实战,所以栏目只会分享我的读书心得,当然我会分享出每个Demo的代码,如果你有什么想要讨论的地方,可以随时在博客下留言或私信我,我看到后会给予你帮助。
一、Direct3D介绍
- Direct3D是微软公司DirectX SDK集成开发包中的组成部分,主要作用是编写高性能3D图形应用程序,Direct3D 是一个渲染库。
- Direct3D 12是一款为运行在现代图形硬件上各种的Windows平台(Windows桌面版、手机版和Xbos One)编写的高性能3D图形应用程序渲染库。
- Direct3D是一种底层库,尤其是Direct3D 12,它实现了前所未有的更底层的硬件抽象,削减驱动层的功能交给我们开发者,以实现性能的提升。
- 另外,由于当今每一个人的电脑都配备了现代图形设备,因此非3D应用程序也开始逐步把计算密集型的工作交给显卡来执行,这就是所谓的GPU通用计算。
英文 | 中文 |
---|---|
GPU(Graphics Processing Unit) | 图形处理器 |
general purpose GPU computing | GPU通用计算 |
二、预备知识
- 如果你不了解以下内容,请对其进行了解:
1. 高中数学,包括:代数、三角学、函数。
2. Visual Studio开发,包括:创建项目、为项目添加文件、链接外部库。
3. C++编程及数据结构知识。
4. 熟悉使用Win32 API进行Windows编程。 - 当然完事开头难,只要你愿意学,那我教你呀,跟着学就行。计算机科学是一门实践性科学,你只要能够按照步骤把程序写出来并运行起来,达到应该有的效果,那么你就是成功的。
三、疑难解答
- 问:为什么要使用Windows开发?那手机即移动游戏,苹果即ios、macOS平台怎么办?
- 答:你可以在百度上搜索steam统计的游戏用户使用平台占比,Windows平台占据主机平台百分之九十以上,所以我们使用Windows开发主机游戏。如果你是个小年轻,你可能理想的认为这不是你想要的,但实际上我们没有那么多选择。就像现在计算机行业,有解决问题的方案别人就会用,不会在乎什么技术、科学。在这个国内都是某荣耀、崩坏,铺天盖地都是传奇、页游的环境中,哪有那么多理想化的东西?我想做的是有血有肉,有灵魂有深度的独立游戏,它不是那些种田首充6元的赚钱机器,它是能感染人影响人的艺术作品。在这个游戏娱乐已经成为人类生活一部分的时代,即使受到垄断,我们也要站出来。就如上所说,总得有人站出来,不管结果如何,是对的那就去做。
- 至于其他疑问就暂时别问了,你只需要知道,想要做三维游戏,这就是你的必经之路,这也是最好的路,最终弯弯绕绕你都会回到这里。
- 最后,如果你的编程基础不好甚至不会编程,没有关系,推荐给你一本更好的书:《逐梦旅程:Windows游戏编程之从零开始》,这是全世界入门游戏开发最好的书籍了,至少在我现在看来。如果你什么也不会,没关系,这本书专门为你设计,而且它也非常好,并且你会有一个很好的领路人。
四、开发环境
1. 一台装有Windows操作系统的计算机,Windows的版本在10或以上都可以。
2. Visual Studio2015 及以上开发环境,没有必要一定要使用2015,我建议你使用Visual Studio2022,因为这样你就和我一致。
3. 你计算机的显卡必须要支持Direct3D 12,当然大多数显卡都是支持的,不用担心。
五、资料查询
- MSDN是微软官方的开发者帮助网站,网址是:MSDN,如果失效你在百度搜索MSDN即可。MSDN的作用就是一切关于Windows或Direct3D的事情你都可以查找,点击搜索框输入你想要的查找即可。未来使用Windows API开发时,如果你对哪个函数不了解,那么世界上最权威能回答你的地方,就是官方的MSDN。
- MSDN中有Direct3D 12的编程指南,网站是:Direct3D 12 Programming Guide,这是Direct3D 12的编程指南,如果你想了解一些什么,就到这里来。
- 你要明确的是,这本书或者这个栏目,所讲授的主要目的是Direct3D 的API。即我们想告诉你的是如何使用 Direct 3D 的函数,如果你未来想开发游戏或图形引擎,那么其架构设计需要你在学习完Direct3D后再独立思考并设计。
- 接下来就让我们开始吧!我们将创建一个Window项目,然后配置环境,最终渲染一个酷炫的Cube。如果你遇到什么问题没有在文中说明,请在评论区通知我~
六、创建Windows API开发项目
- 第一步:点击 Visual Stdio,再点击创建新项目
- 第二步:如下图选择三处,再点击下一步
- 第三步:如下图所示,可能有一点繁杂但没有关系,因为无论你怎么选其实最后都可以进行开发,所以不用担心,快点创建吧!
- 第四步:
七、基础环境配置
- 学过LearnOpenGLCN的人都知道,要想做出一个三维可观赏的立方体都是很不容易的,要写摄像机、着色器等好多类。
- 为了避免开发的繁琐事项,本书的开发者在随书的示例代码中提供了许多文件夹,如下图所示:
- 其中Common是公用的基石代码,即上文中说的什么摄像机之类的,作者写好了我们直接使用即可,避免了初学时什么都看不到,也避免了初学时就要学一堆看不懂东西。如果你没有书籍配套资源也没有关系,文章末尾我以百度云的形式分享了书籍配套资源,下载完就可以继续了~
- 本书的Demo0即示例零是渲染一个Cube即立方体,在上文六创建完项目的基础下,我们现在来配置项目。
- 首先将Common文件夹放到我们刚创建项目的文件夹的同级目录下,如下图所示:
- 其中DirectX12_Windows_GameDevelop是我创建的解决方案名。
- 然后在VS面板中右键“头文件”,选择“添加文件”,选择“现有文件”。如下图所示:
- 再来到我们刚才放置在解决方案同级目录下的Common文件中。如果不会可以看下图:
- 找到Common文件夹后双击打开,框选所有.h头文件添加即可。
- 你可能注意到Common文件夹中还剩余一些.cpp文件,我们说过Common文件夹中包含的是开发基础代码,所以它们当然也是要添加的,不过它们不是添加到头文件中,而是添加到源文件中。如下图右键“源文件”,添加现有项,重复上面过程,然后框选所有.cpp文件添加即可。
- 由于作者使用VS2015开发,所有我们需要设置一下VS2019的选择,避免它由于检测程序更严谨而让我们的代码无法运行。按照下图,打开项目的属性页。
- 然后设置符合模式为否
- 最后我们打开书籍配套代码文件夹MyDemos,复制BosApp.cpp文件到我们的项目目录下。
- 复制到我们的项目目录下:
- 复制好后点击VS的源文件,点击添加-现有项,选择项目目录中的BoxApp.cpp,将它添加到项目中。
- 你可能注意到上一幅图中我的目录中有个Shader文件夹,这是MyDemos中着色器文件夹,你在上上幅图中可以看到它,记得把它也放到我们的项目目录中。
八、最终效果
- 渲染出一个很酷的Cube!
- 如果你想不懂计算机图形学,可以学习一下Games101。如果你了解计算机图形学,可以看一下我软光栅渲染出来的Cube,和它一样五颜六色,不过没有它那么酷。
九、资源
- 链接:https://pan.baidu.com/s/1zgx2yniGg44C1NU7PeoVyg?pwd=n0y7
- 提取码:n0y7