作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用简单的 for 循环在一行中移动 pacman,但 pacman 闪烁或者可能是整个屏幕更新和闪烁。我怎样才能让它更平滑?
编辑:
我目前正在使用 C++ Turbo 及其内置图形库。但是我倾向于稍后使用 SDL(在 2D 阵列(网格)上使用图像 block )。
最佳答案
您可以使用多种技术来实现帧之间的平滑过渡。可能最简单的是双缓冲,其中帧的构建是在可视视频内存之外完成的,然后整个内存块被切换到新的帧位置(通常使用页面翻转,快速硬件切换,但即使创建帧在非视频内存中并在一次快速操作中将其“blitting”到视频内存可能是有利的)。
通过使用这种方法,过渡看起来会更加平滑,因为您永远不会在任何时候显示半成品的框架。如果在硬件框架之间进行切换(至少在较旧的 CRT 显示器上 - 实际上我不知道较新的显示器是否有垂直和水平回扫的概念),则尤其如此。
另一种方法是确保每帧的计算成本较低。一个例子是只在非视频内存中绘制 PacMan 中的隧道线一次,因此您可以相对快速地“blit”它(因为它们永远不会改变)。换句话说,构建一个框架将包括:
这大大加快了这个过程,我在俯视太空射击游戏中使用了这个技巧,这样更深的帧也可以移动得更慢,从而产生视差效果。
关于c++ - 吃 bean 人运动不顺畅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4538522/
我是一名优秀的程序员,十分优秀!