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