Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么CreateWictTextureFromFile需要ShowWindow?_C++_Textures_Direct3d - Fatal编程技术网

C++ 为什么CreateWictTextureFromFile需要ShowWindow?

C++ 为什么CreateWictTextureFromFile需要ShowWindow?,c++,textures,direct3d,C++,Textures,Direct3d,我正在编写一些D3D11应用程序,并使用DirectXTK的CreateWictTextureFromFile将纹理文件加载到SRV中。我只想在开始绘制场景时(在初始化模型、纹理、着色器、常量缓冲区等之后)显示渲染窗口,所以我很早就创建了窗口,但后来才忽略ShowWindow 不幸的是,除非在创建纹理之前显示窗口,否则会出现错误: // ShowWindow(hwnd, SW_SHOW); // works hr = DirectX::CreateWICTextureFromFile(devic

我正在编写一些D3D11应用程序,并使用DirectXTK的CreateWictTextureFromFile将纹理文件加载到SRV中。我只想在开始绘制场景时(在初始化模型、纹理、着色器、常量缓冲区等之后)显示渲染窗口,所以我很早就创建了窗口,但后来才忽略ShowWindow

不幸的是,除非在创建纹理之前显示窗口,否则会出现错误:

// 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库需要调用的函数