Фактически, я получил эту проблему из этого вопроса, который я разместил до. Он работает под Windows 10 с DirectX 12. Но мне не удалось создать Texture2D под Windows 7 с DirectX 11. Я создал второй Texture2D для создания MIP-карт, например:
D3D11_TEXTURE2D_DESC textureDesc;
textureDesc.Width = nWidth;//Video width
textureDesc.Height = nHeight;//Video height
textureDesc.MipLevels = 0;//generate a full set of subtextures.
textureDesc.ArraySize = 1;
textureDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
textureDesc.SampleDesc.Count = 1;
textureDesc.Usage = D3D11_USAGE_DEFAULT;
textureDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
textureDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
textureDesc.MiscFlags = D3D11_RESOURCE_MISC_GENERATE_MIPS;
m_pD3dDevice->CreateTexture2D(&textureDesc, NULL, &m_pTexture);
Я только что получил «Недопустимые аргументы» под Windows7. Похоже, что только DirectX11.1 гарантирует такое использование в соответствии с Расширенная поддержка общих ресурсов Texture2D. Флаги привязки D3D11_BIND_SHADER_RESOURCE и D3D11_BIND_RENDER_TARGET не поддерживаются в Windows 7 (версия DirectX должна быть directx11). И без этого метод ID3D11DeviceContext::GenerateMips не действует. Мое приложение должно поддерживать Windows 7, так что есть ли альтернативное решение?