假设我有一个带有常量缓冲区的HLSL顶点着色器片段:
cbuffer matrixBuffer
{
matrix worldMatrix;
matrix viewMatrix;
matrix projectionMatrix;
};
cbuffer matrixBuffer2
{
matrix worldMatrix2;
matrix viewMatrix2;
matrix projectionMatrix2;
};
Run Code Online (Sandbox Code Playgroud)
来自常量缓冲区的变量然后用于acctual vs function,所以我需要设置它们.
在C++中,我声明了以下结构:
struct MatrixType
{
D3DMATRIX world;
D3DXMATRIX view;
D3DXMATRIX projection;
};
Run Code Online (Sandbox Code Playgroud)
在我初学者的应用程序中,我创建了常量缓冲区指针ID3D11Buffer*.
稍后在每帧方法我更新常量缓冲区,即i映射缓冲区,更新子资源,unmap缓冲区和顶点着色器中的设置缓冲区.
当我只有一个常量缓冲区时,一切都很好,但这是我的问题.
directx如何在缓冲区之间进行区分?例如我想设置worldMatrix2如何实现这一目标?
我读了msdn参考但我没有回答.
是否允许具有两个或更多具有相同大小和元素的常量缓冲区?它们是否存储在连续的内存中,所以当我设置缓冲区时,它们是按HLSL声明的顺序设置的?