为什么 CreateWICTextureFromFile 需要 ShowWindow?
Why does CreateWICTextureFromFile require ShowWindow?
我正在编写一些 D3D11 应用程序并使用 DirectXTK 的 CreateWICTextureFromFile 将纹理文件加载到 SRV 中。我只想在开始绘制场景时(在初始化模型、纹理、着色器、常量缓冲区等之后)显示我的渲染 window,所以我很早就创建了 window 但我省略了ShowWindow 直到稍后。
不幸的是,除非我在创建纹理之前显示 window,否则我会收到错误消息:
// ShowWindow(hwnd, SW_SHOW); // works
hr = DirectX::CreateWICTextureFromFile(device.Get(), L"../../Common/Resources/Textures/green_grid.png", nullptr, psTexture.GetAddressOf());
ShowWindow(hwnd, SW_SHOW); // fails
H结果错误:
No such interface supported
如果我在初始化结束时显示 window 似乎也能正常工作,只要我不使用此函数加载任何纹理。
也许我不太了解 window 相对于 D3D API 的工作原理。查看 CreateWICTextureFromFile 的参数,我只看到对设备和 SRV 的依赖。我不确定为什么会依赖 window 可见性?
在调用 WICTextureLoader 之前(它使用 Windows Imaging Component) you need to initialize COM as noted in the documentation。
在您的主 entry-point 中,添加:
if (FAILED(CoInitializeEx(nullptr, COINIT_MULTITHREADED)))
// error
The fact that ShowWindow
happens to initalize COM is an interesting side-effect, but that's definitely not a function you are required to call to use my GitHub libraries.
我正在编写一些 D3D11 应用程序并使用 DirectXTK 的 CreateWICTextureFromFile 将纹理文件加载到 SRV 中。我只想在开始绘制场景时(在初始化模型、纹理、着色器、常量缓冲区等之后)显示我的渲染 window,所以我很早就创建了 window 但我省略了ShowWindow 直到稍后。
不幸的是,除非我在创建纹理之前显示 window,否则我会收到错误消息:
// ShowWindow(hwnd, SW_SHOW); // works
hr = DirectX::CreateWICTextureFromFile(device.Get(), L"../../Common/Resources/Textures/green_grid.png", nullptr, psTexture.GetAddressOf());
ShowWindow(hwnd, SW_SHOW); // fails
H结果错误:
No such interface supported
如果我在初始化结束时显示 window 似乎也能正常工作,只要我不使用此函数加载任何纹理。
也许我不太了解 window 相对于 D3D API 的工作原理。查看 CreateWICTextureFromFile 的参数,我只看到对设备和 SRV 的依赖。我不确定为什么会依赖 window 可见性?
在调用 WICTextureLoader 之前(它使用 Windows Imaging Component) you need to initialize COM as noted in the documentation。
在您的主 entry-point 中,添加:
if (FAILED(CoInitializeEx(nullptr, COINIT_MULTITHREADED)))
// error
The fact that
ShowWindow
happens to initalize COM is an interesting side-effect, but that's definitely not a function you are required to call to use my GitHub libraries.