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