如何取回传递给 ID3D12Object::SetName() 的名称?

How to get back the name passed to ID3D12Object::SetName()?

有 setter,但没有 getter。 The doc 除了这个名称将用于调试诊断和工具之外,没有提供任何信息。

这个有效:

wchar_t name[128] = {};
UINT size = sizeof(name);
object->GetPrivateData(WKPDID_D3DDebugObjectNameW, &size, name);

在 DX11 中 SetName API 不存在,但 SetPrivateData(WKPDID_D3DDebugObjectName, ...) 用于相同的目的。 GetPrivateData 可用于检索字符串。

DX12 实际上使用相同的系统,只是具有不同的 GUID,因为名称是 unicode(注意 WKPDID_D3DDebugObjectNameW 末尾的 W),而 SetName 只是它的捷径。