(XNA) 切换渲染目标会导致性能下降

发布于 2024-12-27 22:52:58 字数 818 浏览 1 评论 0原文

我有以下问题。我尝试使用 Stencil、AlphaTestEffect 和 RenderTarget 剪切部分纹理,但这对我造成了巨大的性能影响。如果没有它,我的帧率接近 30 fps,而有了它,它会下降到 4 fps。

我试图隔离问题的根源,在处理它时,我注意到即使我什么都不做,但将活动渲染目标切换到我的自定义渲染目标,然后如果我将其切换回 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。我评论了与切断图像部分有关的所有部分,并且仍然只是切换渲染目标,这对性能造成了影响。有人可以指导我找出这个问题的原因吗?

卢卡斯

I have the following problem. I'm trying to cut parts of the texture using the Stencil, AlphaTestEffect and RenderTarget, but this causes a huge performance hit for me. Without it, I have close to 30fps, while with it, it drops to 4fps.

I was trying to isolate the root of the problem, and while with it, I noticed that even if I do nothing, but switch the active render target to my custom render target, and then right afterwards if I switch it back to backBuffer, my fps drops by close to 10fps's. All I do is this:

            graphicsDevice.SetRenderTarget(renderTargetA);
            graphicsDevice.SetRenderTarget(null);

While the render target is created that way:

        renderTargetA = new RenderTarget2D(KnightGame.CurrentGame.ScreenManager.GraphicsDevice, 800, 480,
                                           false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8,
                                           0, RenderTargetUsage.PreserveContents);

I tried using DiscardContents, different sizes, but it always drops the fps. I commented all the parts that have to do with cutting off the part of the image and still just with switching the render target it makes a hit to the performance. Can anybody direct me to the cause of this problem?

Lucas

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文