实现后处理管理器

问题描述 投票:0回答:1

我一直在考虑如何在我的引擎中实现后处理管理器(Vanquish)。

我正在努力了解后处理技术的工作原理。我已在 creators.xna.com 网站上阅读并查看了后处理示例,但这似乎重新渲染了应用后处理效果的模型。

我可以为静态模型添加此功能,但是当涉及到重新绘制蒙皮模型时,我会感到困惑,因为他们已经拥有自己的效果技术。

有人可以帮助我理清思路,为我指明正确的方向吗?

xna post-processing
1个回答
1
投票

通常后处理在整个屏幕上进行。这真的很简单。

您要做的就是在设备上设置渲染目标(我假设您可以弄清楚如何从示例中创建渲染目标):

GraphicsDevice.SetRenderTarget(renderTarget);

从此时起,您渲染的所有内容都将渲染到该渲染目标。完成后,您可以将设备设置回绘制到后台缓冲区:

GraphicsDevice.SetRenderTarget(null);

最后,您可以使用渲染目标进行绘制,就好像它是纹理一样(这是 XNA 4.0 中的新功能,在 XNA 3.1 中您必须对其调用

GetTexture
)。

所以要制作后期处理效果:

  • 将场景渲染到渲染目标
  • 切换回后台缓冲区
  • 使用像素着色器全屏渲染渲染目标(使用
    SpriteBatch
    即可),该像素着色器将应用后处理效果。

听起来您想为每个模型执行此操作?这看起来有点奇怪,但肯定是可能的。只需确保您的渲染目标首先具有透明的 Alpha 通道,然后使用 Alpha 混合进行绘制即可。

或者你根本不是指后期处理?您是否真的希望更改绘制模型所用的像素着色器,同时保留蒙皮模型顶点着色器?

© www.soinside.com 2019 - 2024. All rights reserved.