com 对象与其基础 rcw 分开后就不能再使用_DX12削笔机(小笔记)基础DX12API介绍(2)...

本文是DX12图形API系列的第二篇,介绍了DX12应用初始化的关键步骤,强调了ID3D12Debug在调试中的作用。此外,详细讲解了根签名的概念,它是着色器的签名,用于在执行绘制命令前将资源绑定到着色器输入寄存器。最后,概述了渲染流水线的工作流程,包括各个阶段的功能,如顶点着色器、像素着色器和光栅化阶段。文章旨在帮助读者理解DX12的基础知识。
摘要由CSDN通过智能技术生成

6d481a7e893a4264f2347f522af82ee6.png

前言:

俗话说得好,基础不牢,地动山摇。大家好我又来摸鱼了,继续上次没写完的基础DX12图形API分析。还是那句话,欢迎大家在评论区批评指正你们觉得不妥的地方,大家一起交流学习嘛,没啥不好的。

挂一下前篇的链接:

ILLmew:DX12削笔机(小笔记)基础DX12API介绍(1)​zhuanlan.zhihu.com
db53781147053fbb652c6ffd4f918916.png

废话不多说!我们继续吧!


正文:

笔接上文,了解清楚了上文的所有知识后,我们便可以初始化我们的DX12。那是初始化一个DX12图形应用所需要的最少的依赖。

说一个上文忘记说的东西,虽然很不起眼,但是很重要。

ID3D12Debug:

在我们每次对我们的DX12应用进行初始化的时候,都别忘记在创建ID3D12Device之前创建一个ID3D12Debug,通过::D3D12GetDebugInterface()(在d3d12.h的全局作用域中)我们可以获取当前进行Debug所需要的必要接口信息,然后通过ID3D12Debug.EnableDebugLayer()之后,我们就启用了DX12的调试层。(当然,我们要注意仅在我们应用的Debug版本中启用它)这样子,每次我们对DX12进行了不恰当的操作之后(如传错了参数,调用的顺序不对),在通过ThrowIfFailed()宏(实际内容为throw一个error)和catch。我们就可以获得大致的错误信息描述,再通过详细的debug,就可以锁定问题出现的位置。

ID3D12RootSignature:

接着,我们来讲根签名。首先,什么是签名?小时候你爸爸妈妈在你的作业上留下的名字就是一种签名,代表着他们阅读过你做的作业。所谓签名,可以理解为是某一事物的一种独特的象征。那么根签名,就是着色器的签名。

着色器(shader)是一种运行在GPU上面的程序,可以自定义编程GPU的渲染管线。根签名,就是在执行绘制命令之前,将应用程序绑定到流水线上面的资源映射到指定着色器对应的输入寄存器(register)的一个绑定说明。注意!在绘制开始之前,根签名一定要为着色器提供执行期间内需要绑定到渲染流水线的所有资源,并且会由当前的流水线状态对象(pipeline state object)对其进行验证。

这么说完,大家觉得可能还是会有点绕,有点抽象,那我们就来举一个栗子。这是我们在Cpp中见到的最普通的函数形式:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值