我想在SpriteBatch.Begin
和之间更改我的 RenderTargets SpriteBatch.End
。我已经知道这有效:
GraphicsDevice.SetRenderTarget(target1);
SpriteBatch.Begin()
SpriteBatch.Draw(...)
SpriteBatch.End()
GraphicsDevice.SetRenderTarget(target2);
SpriteBatch.Begin()
Spritebatch.Draw(...)
SPriteBatch.End()
但我真的很想让这项工作:
SpriteBatch.Begin()
GraphicsDevice.SetRenderTarget(target1);
SpriteBatch.Draw(...)
GraphicsDevice.SetRenderTarget(target2);
Spritebatch.Draw(...)
SpriteBatch.End()
我曾经见过有人这样做,但我没有找到任何原因。
编辑:关于我为什么要这样做的更多信息:
在我的项目中,我使用 SpriteSortMode.Immediate(以便能够在需要时更改 BlendState),并且我只是遍历一个排序的精灵列表,然后将它们全部绘制出来。但是现在我想在一些精灵上应用多通道着色器,但不是全部!我对着色器很陌生,但据我了解,我必须使用第一遍将我的精灵绘制在中间精灵上,并使用第二遍在最终渲染目标上绘制中间精灵。(我使用的是高斯模糊像素着色器)。这就是为什么我想在我想要的目标上绘制,使用所需的着色器,而不必重新开始/结束。