如何在HLSL中共享matrix?

我正在尝试在多个效果文件中分享这个内容:

matrix worldMatrix : register(vs_4_0, b0); 
  1. 如果我从一个效果文件中设置它,它是否会影响具有相同types的variables分配给该特定的寄存器的每个效果文件?
  2. 这和cbuffer结构有什么区别?

如果你将一个常量绑定到一个寄存器,那么它将一直存在,直到某个东西在同一个地方绑定,或者如果你将这个地方绑定到null。

我想要“分享”的常量缓冲区的方法是在包含文件中有一个恒定的缓冲区结构。 然后将该文件包含在所有着色器中使用。 这很方便,简单。

与单个值和cbuffer的区别在于,如何绑定数据以及如何分配缓冲区。 如果你有一个cbuffer,有128个浮点数,你必须创建一个相同大小的缓冲区。 而一个单一的值不会让你创建一个与这种types不同的注册点。 定期地,有一个具有特定含义的缓冲区是很好的。 换句话说,每一帧都有一个cbuffer被更新,一个每个材质都会被更新,另一个可能包含某种每秒数据。