我只是在尝试使用像素着色器。我发现了一个很好的模糊效果,现在我试图创造一种反复模糊图像的效果。
我想如何做到这一点:我想在 RenderTarget 中应用模糊效果渲染我的图像hellokittyTexture ,然后用该渲染的结果替换hellokittyTexture并在每次 Draw 迭代中一遍又一遍地执行此操作:
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
GraphicsDevice.SetRenderTarget(buffer1);
// Begin the sprite batch, using our custom effect.
spriteBatch.Begin(0, null, null, null, null, blur);
spriteBatch.Draw(hellokittyTexture , Vector2.Zero, Color.White);
spriteBatch.End();
GraphicsDevice.SetRenderTarget(null);
hellokittyTexture = (Texture2D) buffer1;
// Draw the texture in the screen
spriteBatch.Begin(0, null, null, null, null, null);
spriteBatch.Draw(hellokittyTexture , Vector2.Zero, Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
但我收到此错误“渲染目标在用作纹理时不得在设备上设置。” 因为hellokittyTexture = (Texture2D) buffer1;
不是复制纹理而是对 RenderTarget 的引用(基本上它们在分配后是同一个对象)
您知道在 RenderTarget 中获取纹理的好方法吗?或更优雅的方式来做我正在尝试的事情?