HLSL 中的 printf 函数有什么作用?

Svi*_*mpe 5 c++ shader hlsl

MSDN HLSL 参考对 printf 进行了说明:

“向信息队列提交自定义着色器消息。”

https://msdn.microsoft.com/en-us/library/windows/desktop/ff728755%28v=vs.85%29.aspx

什么是信息队列以及如何查看着色器消息?这是否意味着在像素着色器中使用时它会输出宽度*高度(屏幕像素)消息?

谢谢!

Las*_*eki 1

基本上,它可以用于着色器跟踪。D3D11_TRACE_STEP 结构可以帮助您从 HLSL 获取 printf 传递的消息,一个示例如下,乍一看似乎还不错(尽管是用 D 编写的):

https://github.com/evilrat666/directx-d/blob/master/src/directx/d3d11shadertracing.d

可以与该接口配合使用来访问跟踪信息:

https://msdn.microsoft.com/en-us/library/windows/desktop/hh446840(v=vs.85).aspx

免责声明:这只是我在研究该主题时发现的内容,因此我无法提供实际的代码示例。对于调试着色器,我宁愿建议使用Renderdoc或 VS Graphics Debugger