Что делает функция printf в HLSL?
Ссылка MSDN HLSL утверждает это о printf:
Msgstr "Отправляет пользовательское сообщение шейдера в информационную очередь."
https://msdn.microsoft.com/en-us/library/windows/desktop/ff728755%28v=vs.85%29.aspx
Что такое информационная очередь и как я могу увидеть шейдерное сообщение? Означает ли это, что при использовании в пиксельном шейдере он будет выводить сообщения ширина * высота (пиксели экрана)?
Спасибо!
1 ответ
В принципе, его можно использовать для отслеживания шейдеров. Структура D3D11_TRACE_STEP может помочь вам получить сообщение, переданное printf из HLSL, примером может быть следующий, что на первый взгляд кажется нормальным (хотя написано на 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.