假設我有一個以下HLSL頂點着色器片段具有恆定緩衝器:兩個具有相同的元件常數緩衝器
cbuffer matrixBuffer
{
matrix worldMatrix;
matrix viewMatrix;
matrix projectionMatrix;
};
cbuffer matrixBuffer2
{
matrix worldMatrix2;
matrix viewMatrix2;
matrix projectionMatrix2;
};
從恆定緩衝區的變量然後在acctual VS功能使用,所以我需要設置它們。
而在C++我聲明如下結構:
struct MatrixType
{
D3DMATRIX world;
D3DXMATRIX view;
D3DXMATRIX projection;
};
在我的初始化程序,我創建常量緩衝區指針ID3D11Buffer *。
後來在每幀的方法我更新常量緩衝區,這是我的地圖緩衝區,更新子資源,unmap緩衝區,並在頂點着色器中設置緩衝區。
當我只有一個常量緩衝區時,一切都很好,但這裏是我的問題。
directx如何diffrentiate緩衝區之間?例如,我想設置worldMatrix2如何實現這一目標?
我讀msdn的參考,但我沒有得到答案。
它是否允許有兩個或多個具有相同大小和元素的常量緩衝區?它們是否存儲在連續的內存中,所以當我設置緩衝區時,它們是按順序設置的,以便它們在HLSL中聲明?