我正在尝试创建一个媒体基础转换,使用 D2D 和 D3D11 在视频上绘制文本。我正在尝试在 D3D11 资源之上构建 D2D RenderTarget,但不幸的是,大多数 D2D 和 D3D 互操作方法都需要 D3D10,而该项目中不提供 D3D10。
我必须使用的参数如下:ID3D11Device *pDevice、ID3D11Texture2D *pInput、UINT uiInIndex、ID3D11Texture2D *pOutput 和 UINT uiOutIndex。
我尝试遵循本教程的建议,但事实证明它需要一个 ID3D10Texture2D 对象,这对我来说又不是一个选择。
本质上,您将帧从输入纹理复制到输出纹理,然后执行以下操作来检索 IDXGI 表面:
IDXGISurface *surface;
pOutput->QueryInterface(&surface);
然后,按照本教程中的步骤将表面转换为 Direct2D 渲染目标。获得渲染目标后,您可以按照与教程绘制渐变类似的方式在其上绘制。
我以前遇到过同样的问题,这取决于你运行的系统。
您创建交换链吗?如果您使用 XAML UI,则可以使用 IDXGIFactory2::CreateSwapChainForCoreWindow 或 CreateSwapChainForComposition 创建一个。然后,在渲染 d3d 内容后,您可以创建 d2d 目标并在顶部渲染,就像在此 d3d 教程示例中一样,查找“sampleOverlay.cpp”