Вот ничья блок:SpriteBatch обращается к backbuffer вместо RenderTarget?
graphicsDevice.Clear(Color.CornFlowerBlue);
spriteBatch.Begin();
graphicsDevice.SetRenderTarget(renderTarget);
spriteBatch.Draw(texture2D, position, etc);
graphicsDevice.SetRenderTarget(null);
graphicsDevice.Clear(Color.Red);
spriteBatch.End();
Это производит мой Texture2D сверху на красном фоне. Почему это нарисовало мой Texture2D на экране? Когда spriteBatch.Draw называется RenderTarget, он не является backbuffer, и я не рисую RenderTarget в этом коде. Должна ли текстура2D не отображаться, так как она выведена из экрана? Кроме того, почему ничего не отображается (только черный), если я не очищаю экран до окончания spriteBatch?
Хорошо, но почему очистка GraphicsDevice в моей второй до последней строке приводит к тому, что экран переходит из черного в красный с моей текстурой, нарисованной над ним? – GameKyuubi
Речь идет о заказе вашего кода, вы очищаете и заполняете экран, прежде чем заканчиваете свою рассылку спрайтов, что на самом деле рисует спрайты на экране. – XerShade
Правильно, но в моем коде последнее, что я делаю до того, как End() есть Clear(), но каким-то образом мой Texture2D все еще виден. Он меняет цвет фона, но не удаляет Texture2D. – GameKyuubi