我正在努力理解 DirectX 中的常量缓冲区。我见过两种语法
float4 myVar;
在着色器文件的顶层声明,并且
cbuffer myBuffer
{
float4 myVar;
}
详见http://msdn.microsoft.com/en-gb/library/windows/desktop/bb509581(v=vs.85).aspx
我知道常量缓冲区需要分配给插槽(从零开始的索引)并且可以在代码中设置。
我看过的两个框架(SlimDX vs SharpDX)似乎使用不同的约定来设置它们 - SlimDX 通过字符串名称(通过着色器反射?)和 SharpDX 通过插槽号 - 尽管不清楚插槽号是从哪里获得的?
任何人都可以阐明这两种语法之间的区别,如果它们实际上不同,插槽号如何分配给 .fx 文件中的声明以及插槽号如何在着色器之间共享?
任何帮助表示赞赏