directx12 3d+vs2022游戏开发第六章 笔记十一

龙书第21章与22章代码例程对比。

Chapter 21 Ambient Occlusion vs Chapter 22 Quaternions

它们在功能侧重上有所不同,SsaoApp.cpp重点在于屏幕空间环境光遮蔽(SSAO)效果的实现,包含相关计算和渲染流程;QuatApp.cpp则侧重于动画,尤其是骨骼动画的实现,定义了特定模型的动画关键帧和插值。

1.头文件和命名空间SsaoApp.cpp包含ShadowMap.hSsao.h,用于阴影映射和屏幕空间环境光遮蔽功能;QuatApp.cpp包含AnimationHelper.h,用于动画相关功能。除此之外,其余包含的头文件基本相同。

2.全局常量和结构体 :两个文件中RenderItem结构体定义基本相同,但SsaoApp.cpp中定义了RenderLayer枚举用于区分渲染层,QuatApp.cpp无此枚举。

3.类的定义和成员变量

类继承与成员变量 :两个类都继承自D3DApp,但成员变量有所不同。SsaoApp有用于管理阴影映射、SSAO 的成员变量,如mShadowMapmSsao;而QuatApp有用于管理动画的成员变量,如mAnimTimePosmSkullAnimation

渲染项管理SsaoApp使用mRitemLayer数组按渲染层管理RenderItemQuatApp则使用mOpaqueRitems向量管理不透明的RenderItem,并且QuatApp有指向头骨渲染项的指针mSkullRitem

4.初始化和资源构建函数

初始化流程差异Initialize函数中,SsaoApp在初始化时构建了 SSAO 相关的资源,如设置 PSOs;QuatApp则在初始化前定义了头骨动画,获取了描述符大小。

资源构建差异BuildRootSignature函数中,SsaoApp构建了两个根签名(普通和 SSAO),描述符范围和根参数设置与 SSAO 相关;QuatApp构建了一个普通根签名,描述符范围和根参数设置与纹理采样相关。BuildDescriptorHeaps函数中,SsaoApp创建的 SRV 堆包含更多描述符,用于管理多种纹理和缓冲;QuatApp创建的 SRV 堆描述符数量较少,仅用于管理基本纹理。

几何与材质构建BuildShapeGeometryBuildSkullGeometry函数中,SsaoApp在构建形状和头骨几何时处理方式与QuatApp不同,QuatApp在构建头骨几何时从不同文件读取数据并进行特定处理。BuildMaterials函数中,两个文件定义的材质数量和属性不同。

5.更新和绘制函数

更新逻辑差异Update函数中,SsaoApp更新与光照、阴影、SSAO 相关的变换和常量缓冲区;QuatApp更新动画时间、头骨动画,以及相关的常量缓冲区。

绘制流程差异Draw函数中,SsaoApp执行多个渲染步骤,包括阴影映射、法线和深度绘制、SSAO 计算和主渲染;QuatApp主要进行不透明物体的绘制。

6.其他函数SsaoApp有专门用于更新阴影变换、主渲染通道、阴影渲染通道和 SSAO 常量缓冲区的函数,以及绘制场景到阴影图、绘制法线和深度的函数;QuatApp有定义头骨动画关键帧的DefineSkullAnimation函数。此外,两个文件的GetStaticSamplers函数返回的静态采样器数量和设置也有所不同。

相关推荐
东京老树根37 分钟前
SAP学习笔记 - 开发18 - 前端Fiori开发 应用描述符(manifest.json)的用途
笔记·学习
m0_678693331 小时前
深度学习笔记25-RNN心脏病预测(Pytorch)
笔记·rnn·深度学习
我的golang之路果然有问题1 小时前
快速了解GO+ElasticSearch
开发语言·经验分享·笔记·后端·elasticsearch·golang
凤年徐2 小时前
【数据结构初阶】顺序表的应用
c语言·开发语言·数据结构·c++·笔记·算法·顺序表
半导体守望者3 小时前
英福康INFICON VGC501, VGC502, VGC503 单通道、双通道和三通道测量装置
经验分享·笔记·功能测试·自动化·制造
Timmer丿4 小时前
kafka学习笔记(三、消费者Consumer使用教程——配置参数大全及性能调优)
笔记·学习·kafka
Timmer丿4 小时前
kafka学习笔记(三、消费者Consumer使用教程——消费性能多线程提升思考)
笔记·学习·kafka
保持学习ing4 小时前
黑马Java面试笔记之 消息中间件篇(Kafka)
java·笔记·面试·kafka
@蓝莓果粒茶5 小时前
LeetCode第244题_最短单词距离II
c++·笔记·学习·算法·leetcode·职场和发展·c#
肥肠可耐的西西公主5 小时前
前端(vue)学习笔记(CLASS 7):vuex
前端·笔记·学习