C++ 为什么CreateWictTextureFromFile需要ShowWindow?
我正在编写一些D3D11应用程序,并使用DirectXTK的CreateWictTextureFromFile将纹理文件加载到SRV中。我只想在开始绘制场景时(在初始化模型、纹理、着色器、常量缓冲区等之后)显示渲染窗口,所以我很早就创建了窗口,但后来才忽略ShowWindow 不幸的是,除非在创建纹理之前显示窗口,否则会出现错误:C++ 为什么CreateWictTextureFromFile需要ShowWindow?,c++,textures,direct3d,C++,Textures,Direct3d,我正在编写一些D3D11应用程序,并使用DirectXTK的CreateWictTextureFromFile将纹理文件加载到SRV中。我只想在开始绘制场景时(在初始化模型、纹理、着色器、常量缓冲区等之后)显示渲染窗口,所以我很早就创建了窗口,但后来才忽略ShowWindow 不幸的是,除非在创建纹理之前显示窗口,否则会出现错误: // ShowWindow(hwnd, SW_SHOW); // works hr = DirectX::CreateWICTextureFromFile(devic
// 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
HResult错误:
No such interface supported
此外,如果我在初始化结束时显示窗口,只要我不使用此函数加载任何纹理,它似乎也可以正常工作
也许我没有很好地理解D3DAPI窗口的工作原理。查看CreateWictTextureFromFile的参数,我只看到对设备和SRV的依赖。我不确定为什么依赖于窗口可见性?在调用WICTextureLoader(使用)之前,您需要初始化COM,如中所述 在主入口点中,添加:
if (FAILED(CoInitializeEx(nullptr, COINIT_MULTITHREADED)))
// error
ShowWindow
恰好发生在初始化COM上这一事实是一个有趣的副作用,但这肯定不是使用我的GitHub库需要调用的函数
在调用WICTextureLoader(使用)之前,需要初始化COM,如中所述 在主入口点中,添加:
if (FAILED(CoInitializeEx(nullptr, COINIT_MULTITHREADED)))
// error
ShowWindow
恰好发生在初始化COM上这一事实是一个有趣的副作用,但这肯定不是使用我的GitHub库需要调用的函数