首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >精灵是如何工作的?

精灵是如何工作的?
EN

Stack Overflow用户
提问于 2010-06-11 00:27:32
回答 6查看 5.1K关注 0票数 4

精灵是如何工作的?

我看过像“超级马里奥兄弟”这样的老式游戏中的精灵,想知道它们是如何制作游戏的动画。

它们总是以一个大的图像地图的形式出现,那么如何使用它们呢?

对于mario (例如),是否有预先计算的图像坐标来勾勒Mario的轮廓,并在不同的mario精灵之间进行交换以生成动画?

或者,精灵在游戏初始化期间使用预先计算的图像进行预先“切割”,并存储在内存中的某个位置?

显然,我对游戏开发一无所知。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-06-12 06:49:44

在许多较老的视频游戏和计算机系统上,精灵是一种硬件功能,可以将小图像覆盖到较大的屏幕上。虽然Atari 7800有一个类似于维基百科文章中描述的sprite实现,但在这方面它实际上是独一无二的。大多数sprite系统对它们可以在扫描线上显示的每个sprite使用单独的一组电路,包括水平位置触发器和移位寄存器或其他按顺序发送数据的方法。当光栅扫描到达一条线上的适当位置时,电路将开始移出子画面的形状数据。

一些机器(如Odyssey2)包含在视频芯片硬件中,以保持屏幕上所有精灵的形状。Atari 2600只为每个精灵保存了8位的形状数据,并且要求处理器在任何它应该改变的地方实时加载数据。然而,最常见的模式是视频芯片自动从存储器中计时子画面数据。通常,硬件会期望数据是特定格式,或者在某些情况下,是两种格式中的一种。

在某些机器上,在没有CPU干预的情况下,可以在一帧上同时显示的子画面的数量等于子画面电路的数量。其他机器有少量的精灵电路,但可以显示更多的精灵;一旦一个电路完成了一个精灵的显示,它就会从内存中加载下一个精灵的参数。NES符合这种模式。

票数 4
EN

Stack Overflow用户

发布于 2010-06-11 00:30:49

http://en.wikipedia.org/wiki/Sprite_(computer_graphics)

虽然这篇文章似乎没有讨论你的具体问题,但现在我彻底地看了一遍……

无论如何,这可能是两种方式中的一种,但如果我必须实现一个精灵处理程序,我可能会使用拆分方法(尽管如另一个答案所述,对于简单的动画,坐标引用方法可能更容易实现)。

票数 4
EN

Stack Overflow用户

发布于 2010-06-11 00:31:05

你可以两个都做,这取决于开发人员。如果它们被存储为单个大图像,那么您可以计算所需帧的坐标并将其传输到屏幕,或者对于双缓冲屏幕,将其传输到后台屏幕。

或者,您可以将大图像预先剪切成单独的图像,这会占用更多的内存,但会在运行时减少一些时间

在单个图像中可以有多个精灵。可能是在单行中,也可能是在网格中。它们甚至可能被绘制为网格,并简单地剪切成一个单独的块。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3016344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档