C++ DirectX中的ChromaKey
我需要用Direct2d实现一些色度键功能 我有一些来自MSDN的代码示例:C++ DirectX中的ChromaKey,c++,direct2d,direct3d11,dxgi,chromakey,C++,Direct2d,Direct3d11,Dxgi,Chromakey,我需要用Direct2d实现一些色度键功能 我有一些来自MSDN的代码示例: ComPtr<ID2D1Effect> chromakeyEffect; m_d2dContext->CreateEffect(CLSID_D2D1ChromaKey, &chromakeyEffect); chromakeyEffect->SetInput(0, bitmap); chromaKeyEffect->SetValue(D2D1_CHROMAKEY_PROP_COL
ComPtr<ID2D1Effect> chromakeyEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ChromaKey, &chromakeyEffect);
chromakeyEffect->SetInput(0, bitmap);
chromaKeyEffect->SetValue(D2D1_CHROMAKEY_PROP_COLOR, {0.0f, 1.0f, 0.0f, 0.0f});
chromakeyEffect->SetValue(D2D1_CHROMAKEY_PROP_TOLERANCE, 0.2f);
chromakeyEffect->SetValue(D2D1_CHROMAKEY_PROP_INVERT_ALPHA, false);
chromakeyEffect->SetValue(D2D1_CHROMAKEY_PROP_FEATHER, false);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(chromakeyEffect.Get());
m_d2dContext->EndDraw();
然而,我对WinAPI有点陌生。
我们的平台具有ID3D11设备的屈服实例功能,我接收DX11纹理作为输入。
我有两个问题:
1.如何从ID3D11设备获取m_d2dContext?
2.如何从DX11Texture获取ID2D1图像
如何从ID3D11设备获取m_d2dContext?
你不能,至少不能直接
您创建一个D2D工厂,然后在DXGI资源的顶部创建一个渲染目标,该资源反过来来自某些D3D11纹理,因此属于某些D3D11设备。所有这些结合在一起,您可以使用D2D绘制特定的D3D11纹理
如何从DX11Texture获取ID2D1图像?
您的案例的MSDN文档入口点如下:。具体而言,对于D3D纹理到D2D图像场景,建议的路径如下:
同时使用Direct2D和Direct3D有两种主要方法:
[……]
通过使用CreateSharedBitmap从IDXGISurface创建ID2D1Bitmap,可以将Direct3D场景写入位图并使用Direct2D进行渲染