首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChromaKey in DirectX

ChromaKey in DirectX
EN

Stack Overflow用户
提问于 2020-03-05 16:44:18
回答 1查看 189关注 0票数 0

我需要用Direct2d实现一些色度键功能。

我有一些来自MSDN的代码示例:

代码语言:javascript
复制
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上有点新。

我们的平台对ID3D11Device的产量实例具有功能,我接受DX11Texture作为输入。

我有两个问题:

  1. 我怎样才能从m_d2dContext得到ID3D11Device
  2. 我怎样才能从ID2D1Image得到DX11Texture
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 18:16:45

  1. 我怎样才能从m_d2dContext得到ID3D11Device?

你不能,至少不是直接的。

您可以创建一个D2D工厂,然后在DXGI资源之上创建一个呈现目标,而这个目标又来自于特定的D3D11纹理,因此属于特定的D3D11设备。结合所有这些,您可以使用D2D绘制特定的D3D11纹理。

  1. 我怎样才能从ID2D1Image得到DX11Texture?

对于您的情况,MSDN文档的入口点是:Direct2D和Direct3D互操作性概述。对于D3D纹理到D2D图像场景,建议的路径是:

将Direct2D和Direct3D结合使用的主要方法有两种: ..。 通过使用CreateSharedBitmap从IDXGISurface创建ID2D1Bitmap,您可以将Direct3D场景写入位图并使用Direct2D呈现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60550261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档