gpt4 book ai didi

c# - 手动控制何时重绘屏幕

转载 作者:太空狗 更新时间:2023-10-30 00:46:08 25 4
gpt4 key购买 nike

我正在尝试为 XNA 制作基于回合的 roguelike 引擎。我基本上是从我以前使用名为 libtcod 的基于 SDL 的 roguelike 库所做的工作中移植游戏。我怎样才能修改基本的 XNA 模板,让游戏每帧重绘屏幕,而是在我需要的时候重绘?

最佳答案

执行此操作的正确方法是在您想要将后台缓冲区绘制到屏幕上时调用 GraphicsDevice.Present()

现在这里的困难是 Game 类会自动为您调用 Present(特别是在 Game.EndDraw 中),这是您不希望它做的事情.幸运的是 Game 提供了多种方法来防止 Present 被调用:

最好的方法是覆盖 BeginDraw 并让它返回 false,以防止绘制框架(包括防止 DrawEndDraw 从被调用),像这样:

protected override bool BeginDraw()
{
if(readyToDraw)
return base.BeginDraw();
else
return false;
}

其他选择是调用 Game.SuppressDraw ,或者重写 EndDraw,这样它就不会调用 base.EndDraw(),直到您准备好在屏幕上显示一个框架。

就我个人而言,我会简单地绘制每一帧。

关于c# - 手动控制何时重绘屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4054936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com