MiscFlags D3D11_RESOURCE_MISC_GDI_COMPATIBLE用于GDI兼容纹理,但IDXGISurface1 :: GetDC抛出异常

问题描述 投票:1回答:1

我正在使用MiscFlags D3D11_RESOURCE_MISC_GDI_COMPATIBLE创建纹理。然而调试层显示以下错误。如果我使用D3D10_RESOURCE_MISC_GDI_COMPATIBLE标志CreateTexture2D() - 抛出异常。为什么调试层需要D3D10_RESOURCE_MISC而不是D3D11_RESOURCE_MISC?

DXGI错误:IDXGISurface1 :: GetDC:只能为使用D3D10_RESOURCE_MISC_GDI_COMPATIBLE标志创建的纹理调用GetDC。 [其他错误#89:]

TRY_POINTER(renderer);
D3D11_TEXTURE2D_DESC desc;
ZeroMemory(&desc, sizeof(desc));
desc.Width = gsl::narrow_cast<UINT>(width);
desc.Height = gsl::narrow_cast<UINT>(height);
desc.ArraySize = 1;
desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
desc.Usage = D3D11_USAGE_DEFAULT;
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
desc.CPUAccessFlags = 0;
desc.MipLevels = 1;
desc.SampleDesc.Count = 1;
desc.MiscFlags = D3D11_RESOURCE_MISC_GDI_COMPATIBLE;

ID3D11DevicePtr device = renderer->Device();
ID3D11Texture2DPtr  texture2D;
IF_FAILED_THROW_HR(device->CreateTexture2D(&desc, nullptr, &texture2D));
c++ directx-11 dxgi
1个回答
0
投票

抱歉。我的错。 IDXGISurface1在从表面使用GDI Compatible DC之前变为null。现在它正在运作!没有DXGI错误。

© www.soinside.com 2019 - 2024. All rights reserved.