Я просто экспериментирую с пиксельным шейдером. Я нашел хороший эффект размытия, и теперь я пытаюсь создать эффект размытия изображения снова и снова.
КАК я хочу это сделать: я хочу визуализировать свое изображение hellokittyTexture в RenderTarget, применяя эффект размытия, затем заменить 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? или более элегантный способ сделать то, что я пытаюсь?