c++ - 使用 DirectX (2D) 创建多层渲染

标签 c++ graphics directx photoshop

我是 DirectX 的新手,所以我对这项技术了解不多。 我想重现 photoshop 正在做的相同渲染。我的意思是能够实时渲染多个图层(每个图层都有 alpha 贴图)。 有人告诉我 photoshop 使用 DirectX/OpenGl。对于我的项目,我可以使用 DirectX。

我找到了这篇文章 Direct3D rendering 2D images with "multiply" blending mode and alpha这准确地解释了我想做什么,但这篇文章很旧,他使用的是 D3D9。也许,现在有一种更简单/更快的方法可以使用 DirectX 11 和 Direct2D 创建相同的效果。

我希望在我开始任何事情之前你能给我一些建议。

谢谢。

编辑:我不知道我是否足够清楚,我不是在要求任何代码,只是为了一个方向:如果我应该使用 Direct2D 或 Direct3D 9/10/11。如果我必须对着色器进行编程...那么做这个项目最好的方法是什么?

最佳答案

根据您正在寻找的性能,D3D 或 D2D 会更合适。 D3D 是更保留的模式,因此使用起来更复杂的 API,但如果性能是绝对关注的,那么它就是您想要的。 D2D API 是更直接的模式,但这当然会导致更简单的 API 和更慢的性能。

根据我的经验,我会从 D2D 入手,尤其是因为新的 D2D API(例如 ID2D1DeviceContext::DrawImage()ID2D1Effect)支持许多混合和复合模式。 D2D 确实可以与 D3D 很好地互操作,因此将来您可以根据需要使用 D3D 的一部分。 D2D 还提供了一个非常好的接口(interface)来支持打印,因此可以使用相同的渲染代码进行打印。

关于c++ - 使用 DirectX (2D) 创建多层渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388440/

相关文章:

directx - 检测全屏 Direct3D 应用程序

c# - slim DX : How to draw multiple objects?

c++ - 添加两个多项式并正确显示结果

java - 为什么屏幕不变色?

java - 如何在 Java 中制作形状 "blink"或更改颜色?

delphi - 当显示第二个表单时,如何阻止 UI 锁定?

c++ - 在 DirectX 中取消投影屏幕坐标时出现意外结果

c++ - #include 在 C++ 枚举中的效果

c++ - 使用 objdump 或 gcc -c 将汇编指令转换为二进制

c++ - 适当的模板使用