在 Direct3D12 中使用 Stream Output

一. 引子

从 DirectX10 开始 Direct3D 引入了 Stream Output 功能(下称 SO ),它能利用 GPU 进行一些模型操作,其中利用 SO 受益最大的就是 Skinning Animation。在没有 SO 之前蒙皮动画要不就是由 CPU 完成,要不就是每次渲染的时候都需要重新做一次蒙皮,这在多光源光照渲染 Shadow Map 中是非常耗时的,引入 SO 之后只要进行一次蒙皮动画所得到的 Vertex Buffer 可以重用,这样既节省了 CPU 又获得了 GPU 加速。

二.一切从 CreateGeometryShaderWithStreamOutput 说起

1. D3D11 / D3D10 与 Stream Output

D3D10 和 D3D11 使用 SO 的时候需要调用 CreateGeometryShaderWithStreamOutput 函数。虽然看函数名这个函数是要创建一个 Geometry Shader(下称 GS ),但是在实际使用的时候并不一定需要给出 GS 的 Binary Code。像 Skinning 这种操作实际上只需要在 Vertex Shader(下称 VS ) 中就能完成,根本不需要 GS。在调用 CreateGeometryShaderWithStreamOutput 的时候 pShaderBytecode 参数给的是 VS 的 Binary Code,创建好的 ID3D11GeometryShader 对象其实并没有实际代码,只是用来对应 SO 之后数据输出的信息。
把 VB / IB / VS / GS 设置进渲染管

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Direct3D是由Microsoft开发的一种图形API,用于在Windows平台上实现图形渲染功能。Direct3D的源代码是指Direct3D库的实现源代码,这些源代码涵盖了Direct3D的各种功能和算法。Direct3D源码是机密的,并且不可公开,只有经过授权的开发人员才能访问和使用Direct3D的源代码提供了对图形硬件的底层访问,开发人员可以使用这些源代码构建图形应用程序,并实现图形渲染、投影、纹理映射、光照等各种图形效果。Direct3D源代码包括了底层的图形操作、纹理管理、三维空间计算等算法,以及与硬件交互的接口。 Direct3D源代码的访问受到严格的控制,只有合作伙伴或授权的开发人员才能查看和修改它。这样可以保护Direct3D的安全性,防止源代码被滥用或恶意利用。通过合理授权和许可,开发人员可以获得Direct3D源代码的访问权,并根据自己的需要进行定制和优化。 Direct3D源代码的使用需要一定的专业知识和经验,开发人员需要熟悉图形编程和底层硬件操作的相关知识。通过研究和理解Direct3D源代码,开发人员可以深入了解Direct3D的工作原理,并开发出更高效、更强大的图形应用程序。 总之,Direct3D源代码是实现Direct3D功能的基础,它提供了底层的图形操作和算法实现。通过合法的授权和许可,开发人员可以使用Direct3D源代码进行图形应用程序的开发和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值