有了XNA的背景知识,我尝试创建一个简单的DirectX11应用程序。现在我试图弄清楚如何设置着色器常量,如投影矩阵等。我正在阅读关于常量缓冲区的文章-但是在渲染之前没有简单的方法来设置一些常量,而不使用缓冲区吗?
发布于 2012-03-03 19:38:03
我也走了同样的路,这也是我一直在努力解决的问题。自DirectX10以来,界面发生了很多变化,允许进行更全面的控制。
迟早你会习惯这些缓冲区,并发现它们实际上相当整洁。
以下是一些优势和提示:
HLSL现在有一种统一的方式将顶点、索引和常量数据绑定到流水线上,即class.
Buffer pack the constants manually使用packoffset() HLSL函数。限制的每个网格
每个常量缓冲区最多可以容纳4096个向量;每个向量最多包含四个32位值。每个流水线阶段最多可以绑定14个常量缓冲区(保留2个额外的插槽供内部使用)。
发布于 2012-03-03 14:52:24
在DirectX11中,可以为着色器设定恒定缓冲区。一次不能只设置一个常量。一次只能设置整个缓冲区。要么使用常量缓冲区,要么查看Effects11框架,这将使您更容易使用着色器常量的API (类似于D3D9效果)。
下面是创建常量缓冲区并将其应用于顶点着色器的示例:http://msdn.microsoft.com/en-us/library/ff476896.aspx
https://stackoverflow.com/questions/9542832
复制相似问题