首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DX11常量缓冲区持久性

DX11常量缓冲区持久性
EN

Stack Overflow用户
提问于 2018-01-29 04:42:49
回答 1查看 180关注 0票数 0

使用DirectX 11 & Effect 11,我试图理解如何使用不同的着色器高效地绘制两个对象。因此,首先我设置了所有状态,并一次性设置了常量缓冲区。在迭代第一个对象的所有网格时,所有先前设置的常量缓冲区都保持可用,这很好,正如您看到的here.

然后我应用另一遍(来自Effect 11的Pass.Apply())来绘制第二个对象。此时,我所有的常量缓冲区都是destroyed as shown there.

因此,现在我开始怀疑是否不能在应用程序启动时一次性设置常量缓冲区,然后在任何时候跨任何着色器使用/共享。或者它只属于活动着色器?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-30 10:09:32

如果我记得,如果你执行一个不同的效果,那么你将不得不重新关联常量缓冲区到阶段(这也可能取决于驱动程序)。只有在不更改着色器状态的情况下,才能重用相同的常量缓冲区。

为了安全起见,不同的过程基本上是绑定一组新的着色器(如果它们不同)。最佳实践是每次执行不同的效果传递时绑定资源(缓冲区)。

我个人已经远离了Effects,因为它已经被弃用了,我还发现明确地理解我绑定到管道的内容有助于我对常量缓冲区的用法的理解。

缓冲区不应该被销毁,它应该在第二次调用时解除绑定-否则你会有更邪恶的事情发生。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48491075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档