5

我正在尝试创建一个使用 D2D 和 D3D11 在视频上绘制文本的媒体基础转换。我正在尝试在 D3D11 资源之上构建 D2D RenderTarget,但不幸的是,大多数 D2D 和 D3D 互操作方法都需要 D3D10,这在此项目中不可用。

我必须使用的参数如下:ID3D11Device *pDevice、ID3D11Texture2D *pInput、UINT uiInIndex、ID3D11Texture2D *pOutput 和 UINT uiOutIndex。

我试图遵循本教程的建议,但结果证明它需要一个 ID3D10Texture2D 对象,这对我来说又不是一个选项。

4

3 回答 3

5

我之前遇到过同样的问题,这取决于您运行的是哪个系统。

  1. 在 Windows 7 上,只有 Direct3D 10 支持与 Direct2D 互操作
  2. 在 Windows 8 上,Direct2D 可以与 Direct3D 11 互操作
于 2012-11-10T13:04:42.603 回答
5

本质上,您将帧从输入纹理复制到输出纹理,然后执行以下操作以检索 IDXGI 表面:

IDXGISurface *surface;
pOutput->QueryInterface(&surface);

然后,按照本教程中的步骤将表面转换为 Direct2D 渲染目标。一旦你有了渲染目标,你就可以像教程中绘制渐变的方式一样在它上面绘制。

于 2012-08-02T21:25:53.217 回答
1

你创建一个交换链吗?如果您使用 XAML UI,您可以使用 IDXGIFactory2::CreateSwapChainForCoreWindow 或 CreateSwapChainForComposition 创建一个。然后在渲染 d3d 内容后,您可以创建 d2d 目标并在顶部渲染,就像在这个 d3d 教程示例中一样,查找“sampleOverlay.cpp”

http://code.msdn.microsoft.com/windowsapps/Direct3D-Tutorial-Sample-08667fb0/sourcecode?fileId=44730&pathId=1319002242

于 2012-08-02T05:21:00.897 回答