我一直在考虑如何在我的引擎(Vanquish)中实现一个 PostProcessing 管理器。
我正在努力弄清楚后处理技术的工作原理。我已经阅读并查看了creators.xna.com网站上的后期处理示例,但这似乎重新渲染了应用后期处理效果的模型。
我可以为静态模型添加此功能,但在重新绘制蒙皮模型时,我会感到困惑,因为它们已经拥有自己的效果技术。
有人可以通过指出正确的方向来帮助我理顺我的想法吗?
我一直在考虑如何在我的引擎(Vanquish)中实现一个 PostProcessing 管理器。
我正在努力弄清楚后处理技术的工作原理。我已经阅读并查看了creators.xna.com网站上的后期处理示例,但这似乎重新渲染了应用后期处理效果的模型。
我可以为静态模型添加此功能,但在重新绘制蒙皮模型时,我会感到困惑,因为它们已经拥有自己的效果技术。
有人可以通过指出正确的方向来帮助我理顺我的想法吗?
通常后处理工作在整个屏幕上。这很简单,真的。
您所做的是在设备上设置渲染目标(我假设您可以从示例中弄清楚如何创建渲染目标):
GraphicsDevice.SetRenderTarget(renderTarget);
从这一点开始,您渲染的所有内容都将被渲染到该渲染目标。完成后,您可以将设备设置回绘图到后台缓冲区:
GraphicsDevice.SetRenderTarget(null);
最后,您可以像使用纹理一样使用渲染目标进行绘制(这是 XNA 4.0 中的新功能,在 XNA 3.1 中您必须调用GetTexture
它)。
所以要制作后处理效果:
SpriteBatch
使用将应用您的后处理效果的像素着色器渲染您的渲染目标全屏(使用将做)。你听起来像你想为每个模型做这个?这看起来有点奇怪,但肯定是可能的。只需确保您的渲染目标开始时具有透明的 Alpha 通道,然后使用 Alpha 混合进行绘制。
或者您根本不是指后期处理?您是否真的希望更改绘制模型的像素着色器,同时保留蒙皮模型顶点着色器?