У меня следующая проблема. Я пытаюсь вырезать части текстуры, используя Stencil, AlphaTestEffect и RenderTarget, но это сильно сказывается на производительности. Без него у меня будет около 30 кадров в секунду, а с ним он падает до 4 кадров в секунду.
Я пытался изолировать корень проблемы, и, находясь с ним, я заметил, что даже если я ничего не делаю, но переключаю активную цель рендеринга на свою пользовательскую цель рендеринга, а затем сразу же, если я переключаю ее обратно backBuffer, мой fps падает почти до 10fps. Все, что я делаю, это:
graphicsDevice.SetRenderTarget(renderTargetA);
graphicsDevice.SetRenderTarget(null);
Пока цель рендеринга создается таким образом:
renderTargetA = new RenderTarget2D(KnightGame.CurrentGame.ScreenManager.GraphicsDevice, 800, 480,
false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8,
0, RenderTargetUsage.PreserveContents);
Я пытался использовать DiscardContents разных размеров, но он всегда сбрасывает fps. Я прокомментировал все части, которые связаны с обрезкой части изображения, и все же, просто переключая цель рендеринга, это сказывается на производительности. Кто-нибудь может направить меня к причине этой проблемы?
Lucas