【发布时间】:2020-03-08 04:12:06
【问题描述】:
如何使用 Direct2D-DirectWrite 连接 DirectX11 中的 backbuffer?
如何将 Dx11 中的 bacbuffer 与 Direct2D-DriectWrite 连接
大家好。
当我使用 Direct2D 时,可以将 DrectWrite 连接到 Direct2D 并写入 2d 字符。 但是在 Dx11 中,似乎无法将 DirectWrite 连接到 Dx11 框架。所以我创建了其他 Direct2D RanderTarget 来绘制 2d 字符。但在这个解决方案中,fps 下降到一半,然后崩溃。所以我需要另一个解决方案 这可以在 Dx11 框架中使用 DriectWrite 吗?
这是我的 Direct2D 初始化函数 ID2D1RenderTarget 和 ID2D1Factory 值
extern ID2D1RenderTarget* Rendtrg;
extern ID2D1Factory* factory;
extern IDXGISurface* pBackBuffer;
//Create BackBuffer
{
HRESULT hr;
ID3D11Texture2D* BackBuffer;
hr = SwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&BackBuffer);
assert(SUCCEEDED(hr));
hr = Device->CreateRenderTargetView(BackBuffer, NULL, &RTV);
assert(SUCCEEDED(hr));
BackBuffer->Release();
DeviceContext->OMSetRenderTargets(1, &RTV, NULL);
}
//Initailize Direct2D Funtion
HRESULT hr;
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, factory);
if (FAILED(hr))
return hr;
hr = SwapChain->GetBuffer(
0,
IID_PPV_ARGS(&pBackBuffer)
);
FLOAT dpiX;
FLOAT dpiY;
(*factory)->GetDesktopDpi(&dpiX, &dpiY);
D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties
(
D2D1_RENDER_TARGET_TYPE_DEFAULT,
D2D1::PixelFormat(DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_PREMULTIPLIED),
dpiX,
dpiY
);
hr = (*factory)->CreateDxgiSurfaceRenderTarget
(
pBackBuffer,
&props,
Rt
);
【问题讨论】:
标签: c directx-11 direct2d