我的着色器有2个constans缓冲区,每个帧一个,每个对象一个(让它们称为cbPerFrame和cbPerObj)。看起来来自cbPerFrame缓冲区的数据没有通过像素着色器。我最近在设置常量缓冲区时更改了插槽号(使用PSSetConstantBuffers / VSSetConstantBuffers)。现在我的问题是:
更改常量缓冲区的插槽号时,是否必须更改着色器文件中的某些内容?在声明着色器文件中的常量缓冲区时,我读了一些关于关键字“Register”的内容,但我从未真正理解过。数据应该仍然在第二个插槽中,直到我覆盖它,rigth?
很抱歉,如果这是一个基本问题,但是插槽编号和常量缓冲区的分配让我感到困惑
答案 0 :(得分:2)
是的,您需要在着色器中指定cbuffer在哪个插槽中。要做到这一点,请使用:
cbuffer cbPerFrame : register(b0)
{
// insert guts here
};
这会将cbPerFrame注册到插槽0中。