小编use*_*886的帖子

两个具有相同元素的常量缓冲区

假设我有一个带有常量缓冲区的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声明的顺序设置的?

c++ hlsl directx-11 vertex-shader

4
推荐指数
1
解决办法
2437
查看次数

标签 统计

c++ ×1

directx-11 ×1

hlsl ×1

vertex-shader ×1