【发布时间】:2025-12-22 05:05:07
【问题描述】:
使用 DirectX 11 和 Effect 11,我试图了解如何使用不同的着色器有效地绘制两个对象。所以首先我设置了所有状态并设置了常量缓冲区一次。在遍历所有第一个对象的网格时,所有先前设置的常量缓冲区都保持可用,这很好,如您所见 here.
然后我正在应用另一个通道(来自 Effect 11 的 Pass.Apply())来绘制第二个对象。在这一点上,我所有的常量缓冲区都是 destroyed as shown there.
所以现在我开始怀疑是否不能在应用启动时一次性设置常量缓冲区,然后在任何着色器中随时使用/共享。还是只属于活动着色器?
谢谢!
【问题讨论】:
-
是什么让您认为 CB 正在被“摧毁”?正如人们所期望的那样,每次抽签都会更新它们。看看这个classic presentation 以获得对常量缓冲区的一些深入了解。
-
即使是关于以前版本的 DirectX,它也是一个非常有趣的文档,感谢 Chuck 的分享,但我没有看到任何关于 CB“生命周期”的信息可以解释我的情况。
标签: directx directx-11