我试图通过调用 D3DCompile() 或 D3DCompile2() 来获取由我的程序编译的计算着色器的反射信息。
编译正常,代码正确执行。
然后我调用 D3DReflect 来获取针对已编译代码的反射器。
一旦我有了反射器,我就调用 reflector->GetDesc(&ShaderDesc);
这非常有效:ShaderDesc 结构报告 ConstantBuffers 等于 1,这是正确的。
然后我调用 reflector->GetConstantBufferByIndex(0) ,它总是返回空指针。
怎么了 ?
我的环境:Windows 10 完全最新,NVidia Quadro K4200 上的 DirectX11 驱动程序 24.21.14.1240 日期为 2019 年 7 月 21 日,D3DCompiler_47.dll 日期为 2019 年 3 月 19 日。
编辑:在着色器中,常量缓冲区定义如下:
cbuffer TImageParams : register(b0)
{
int2 RawImageSize; // Actual image size in RawImage
// More items....
};
亲切的问候