Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reflection DirectCompute D3DReflect GetConstantBufferByIndex始终返回空指针_Reflection_Directx 11_Hlsl_Directcompute - Fatal编程技术网

Reflection DirectCompute D3DReflect GetConstantBufferByIndex始终返回空指针

Reflection DirectCompute D3DReflect GetConstantBufferByIndex始终返回空指针,reflection,directx-11,hlsl,directcompute,Reflection,Directx 11,Hlsl,Directcompute,我试图通过调用D3DCompile()或D3DCompile2()获取程序编译的计算着色器的反射信息 编译正常,由正确执行的代码确认 然后我调用D3DReflect以获得针对已编译代码的反射器 一旦有了反射器,我就调用reflector->GetDesc(&ShaderDesc) 这非常有效:ShaderDesc结构报告ConstantBuffers等于1,这是正确的 然后调用reflector->GetConstantBufferByIndex(0),它总是返回空指针 怎么了 我的环境:Win

我试图通过调用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....
};

亲切问候

你能发布你的着色器还是复制案例的简单版本吗?@catflier编辑了这个问题,展示了常量缓冲区是如何定义的。没有什么特别的…如果还有一个小的最小的例子,它会有所帮助,因为目前我无法用我的版本复制。我已经尝试了一个最小的例子,它的工作如预期。这是我的完整应用程序,它不起作用。这是一个相当大的一个:在CPU端,它有67K代码行,其中6K是特定于GPU的。还有超过4K的着色器代码行。除了在StackOverflow上发布代码太长之外,我不允许公开代码。我不希望在这里得到解决方案,但我希望得到一些关于检查或尝试什么的建议。谢谢。如果改用reflect->GetResourceBindingDesc(),您是否也会遇到同样的问题?