常量缓冲区上的槽号

时间:2013-05-31 11:23:43

标签: c++ shader directx-11

我的着色器有2个constans缓冲区,每个帧一个,每个对象一个(让它们称为cbPerFrame和cbPerObj)。看起来来自cbPerFrame缓冲区的数据没有通过像素着色器。我最近在设置常量缓冲区时更改了插槽号(使用PSSetConstantBuffers / VSSetConstantBuffers)。现在我的问题是:

更改常量缓冲区的插槽号时,是否必须更改着色器文件中的某些内容?在声明着色器文件中的常量缓冲区时,我读了一些关于关键字“Register”的内容,但我从未真正理解过。数据应该仍然在第二个插槽中,直到我覆盖它,rigth?

很抱歉,如果这是一个基本问题,但是插槽编号和常量缓冲区的分配让我感到困惑

1 个答案:

答案 0 :(得分:2)

是的,您需要在着色器中指定cbuffer在哪个插槽中。要做到这一点,请使用:

cbuffer cbPerFrame : register(b0)
{
     // insert guts here
};

这会将cbPerFrame注册到插槽0中。