gpt4 book ai didi

c++ - 吃 bean 人运动不顺畅

转载 作者:行者123 更新时间:2023-11-30 02:10:28 25 4
gpt4 key购买 nike

我正在使用简单的 for 循环在一行中移动 pacman,但 pacman 闪烁或者可能是整个屏幕更新和闪烁。我怎样才能让它更平滑?

编辑:

我目前正在使用 C++ Turbo 及其内置图形库。但是我倾向于稍后使用 SDL(在 2D 阵列(网格)上使用图像 block )。

最佳答案

您可以使用多种技术来实现帧之间的平滑过渡。可能最简单的是双缓冲,其中帧的构建是在可视视频内存之外完成的,然后整个内存块被切换到新的帧位置(通常使用页面翻转,快速硬件切换,但即使创建帧在非视频内存中并在一次快速操作中将其“blitting”到视频内存可能是有利的)。

通过使用这种方法,过渡看起来会更加平滑,因为您永远不会在任何时候显示半成品的框架。如果在硬件框架之间进行切换(至少在较旧的 CRT 显示器上 - 实际上我不知道较新的显示器是否有垂直和水平回扫的概念),则尤其如此。

另一种方法是确保每帧的计算成本较低。一个例子是只在非视频内存中绘制 PacMan 中的隧道线一次,因此您可以相对快速地“blit”它(因为它们永远不会改变)。换句话说,构建一个框架将包括:

  • 复制永远不变的隧道墙。
  • 复制很少变化的点。
  • 绘制人物,这些人物经常变化。

这大大加快了这个过程,我在俯视太空射击游戏中使用了这个技巧,这样更深的帧也可以移动得更慢,从而产生视差效果。

关于c++ - 吃 bean 人运动不顺畅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4538522/

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