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