我是 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/