假设我有一个带有常量缓冲区的以下 HLSL 顶点着色器片段:
cbuffer matrixBuffer
{
matrix worldMatrix;
matrix viewMatrix;
matrix projectionMatrix;
};
cbuffer matrixBuffer2
{
matrix worldMatrix2;
matrix viewMatrix2;
matrix projectionMatrix2;
};
然后将来自常量缓冲区的变量用于实际 vs 函数,所以我需要设置它们。
在 C++ 中,我声明了以下结构:
struct MatrixType
{
D3DMATRIX world;
D3DXMATRIX view;
D3DXMATRIX projection;
};
在我的初始化应用程序中,我创建了常量缓冲区指针 ID3D11Buffer*。
稍后在每帧方法中我更新常量缓冲区,即我映射缓冲区,更新子资源,取消映射缓冲区,并在顶点着色器中设置缓冲区。
当我只有一个常量缓冲区时,一切都很好,但这是我的问题。
directx 如何区分缓冲区?例如我想设置 worldMatrix2 如何实现这个?
我阅读了 msdn 参考资料,但没有得到答案。
是否允许有两个或多个具有相同大小和元素的常量缓冲区?它们是否存储在连续的内存中,所以当我设置缓冲区时,它们是按照在 HLSL 中声明的顺序设置的吗?