Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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++ MiscFlags D3D11_RESOURCE_MISC_GDI_COMPATIBLE用于GDI兼容纹理,但IDXGISurface1::GetDC引发异常_C++_Directx 11_Dxgi - Fatal编程技术网

C++ MiscFlags D3D11_RESOURCE_MISC_GDI_COMPATIBLE用于GDI兼容纹理,但IDXGISurface1::GetDC引发异常

C++ MiscFlags D3D11_RESOURCE_MISC_GDI_COMPATIBLE用于GDI兼容纹理,但IDXGISurface1::GetDC引发异常,c++,directx-11,dxgi,C++,Directx 11,Dxgi,我正在创建一个与MiscFlags D3D11_RESOURCE_MISC_GDI_兼容的纹理。但调试层显示以下错误。 如果我使用D3D10\u资源\u杂项\u GDI\u兼容标志CreateTexture2D()-将引发异常。为什么调试层需要D3D10_RESOURCE_MISC而不是D3D11_RESOURCE_MISC DXGI错误:IDXGISurface1::GetDC:GetDC只能为使用D3D10_资源_杂项_GDI_兼容标志创建的纹理调用。[杂项错误#89:] TRY_指针(渲染

我正在创建一个与MiscFlags D3D11_RESOURCE_MISC_GDI_兼容的纹理。但调试层显示以下错误。 如果我使用D3D10\u资源\u杂项\u GDI\u兼容标志CreateTexture2D()-将引发异常。为什么调试层需要D3D10_RESOURCE_MISC而不是D3D11_RESOURCE_MISC

DXGI错误:IDXGISurface1::GetDC:GetDC只能为使用D3D10_资源_杂项_GDI_兼容标志创建的纹理调用。[杂项错误#89:]

TRY_指针(渲染器);
D3D11_纹理2 d_描述;
零内存(&desc,sizeof(desc));
描述宽度=gsl::窄铸件(宽度);
描述高度=gsl::窄铸件(高度);
desc.ArraySize=1;
描述格式=DXGI格式\u B8G8R8A8\u UNORM;
描述用法=D3D11\u用法\u默认值;
desc.BindFlags=D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_RENDER_TARGET;
desc.CPUAccessFlags=0;
desc.MipLevels=1;
desc.SampleDesc.Count=1;
desc.miscsflags=D3D11_资源_MISC_GDI_兼容;
ID3D11DevicePtr设备=渲染器->设备();
ID3D11Texture2DPtr texture2D;
如果失败,抛出(设备->创建纹理2d(&desc、nullptr和纹理2d));

对不起。这是我的错。在从曲面使用GDI兼容DC之前,IDXGISurface1变为null。现在它开始工作了!没有DXGI错误。

对不起。这是我的错。在从曲面使用GDI兼容DC之前,IDXGISurface1变为null。现在它开始工作了!没有DXGI错误

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));