gpt4 book ai didi

constants - DirectX11 设置着色器常量

转载 作者:行者123 更新时间:2023-12-04 20:39:45 25 4
gpt4 key购买 nike

拥有 XNA 背景后,我尝试创建一个简单的 DirectX11 应用程序。现在我尝试弄清楚如何设置着色器常量,例如投影矩阵等。我正在阅读有关常量缓冲区的内容 - 但是没有简单的方法可以在渲染之前设置一些常量,而不使用缓冲区?

最佳答案

我走了同样的路,这也是我一直在努力解决的问题。
自 DirectX10 以来,界面发生了很多变化,允许进行更全面的控制。

迟早你会习惯缓冲区并发现它们实际上非常整洁。

以下是一些优点和提示:

  • 现在有一种将顶点、索引和常量数据绑定(bind)到管道的统一方式,即 Buffer类(class)。
  • 常量封装在寄存器中,每个寄存器最多保存四个 32 位组件。
  • 您可以pack the constants manually使用 packoffset() HLSL 函数。有some rules你必须考虑。
  • 由于您可以将多个常量缓冲区绑定(bind)到单个阶段,因此建议使用 separate your constants通过他们的更新频率。例如, View 和投影矩阵通常每帧更新一次,而世界矩阵会随着每个网格而改变。为了获得最佳性能,您将创建两个缓冲区,一个包含每帧数据,另一个包含每个网格数据。
  • 最后,constant buffers 的限制:

  • Each constant buffer can hold up to 4096 vectors; each vector contains up to four 32-bit values. You can bind up to 14 constant buffers per pipeline stage (2 additional slots are reserved for internal use).

    关于constants - DirectX11 设置着色器常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542832/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com