本帖最后由 n805 于 2025-1-4 13:47 编辑 / t9 P+ Z. {) w' f4 h# Y) O
2 i: O+ Z8 ?, t ^# _5 K& _0 X6 [
精灵图也说的差不多了,来说说背景图层。上文提到过,土星能够将包括精灵图在内的五枚图层重叠。
% y4 r7 b5 k6 r- g$ ^
$ `* w3 p4 u3 N H, }. F. T现在我们可以看到,这张图上共有6个图层。在最下方的「渐变层」只能以扫描线为单位设定颜色。没有其他图像输出会放置这样一个图层,相当于红白机的「背景色」图层。它无法设定显示图片,也无法设定重叠时摆放的位置,所以和其他背景图层不同。
5 d; h n. j2 m. V4个背景图层,有两个图层是上下左右滚动的普通图层,称它为「基本背景层」。有一面拥有「扩大缩小功能」的背景层,称它为「可放大缩小背景层」。还有一层是拥有包括「放大缩小功能」等「变形」功能的图层,称它为「旋转背景层」。
% h+ w" A- c" J( d' k- X这四个图层在重叠时可以自由改变放置顺序。上面的图里面可放大缩小背景层被放在了最下面,实际上放在最上面也是可以的。并且,背景图层之间可以设定半透明。给优先度高的层设定半透明之后就可以看到下面的层。6 ~- p9 N) f' G( o# b
精灵图就像上面已经写到的一样,它是一个特殊的图层。它可以以像素点为单位设定摆放的顺序。当将那个像素点的优先顺序设定在其他背景层之间的时候,看上去就会像是其他的背景层夹在中间。) F# o/ c. k. Z. U# H/ u
可旋转背景层是在将显存的数据输出时改变读取显存的时机。刚才提到的变形功能则是利用了这一原理,但通常被称作可旋转背景层。实际上除了旋转,这个背景层还拥有许多功能。
! d3 ~. Z& e( g" s J: S先简单介绍下实现旋转的方法。; a6 T, W6 H2 H& \( \- \
. Y# B3 @. d% ^0 p0 S9 ]' f电视(这里指显像管电视)的画面是由扫描线来绘制的。扫描线水平进行扫描,从左往右。这是电视的构造原理,扫描线的运动方向无法改变。画面信息的显存(VRAM)从最初的地址依次读取,输出到电视上就会显示出画面。这时,将读取的顺序,读取的地址改变,也就是倾斜地读取显存。那么读取的画面就是会是倾斜的画面。将这个画面交给扫描线,那么倾斜的画面就会出现在电视上。, [7 P& S' i1 e' Q, f
土星可以对读取显存做设置。不仅可以让画面旋转,还可以以扫描线为单位进行设置。不仅能设定倾斜,还可以设定读取显存的速度。当加快读取的速度时,得到的图像就会缩小;当减慢读取速度时,得到的图像就会放大。还能以扫描线为单位设定读取的位置。不设定读取的倾斜的话,就相当于视差滚轴。 X, ]) R" F. c' w: m. a$ S
这个「以扫描线为单位进行设置」是通过准备与扫描线行数相同的table(在内存里划分出来的一行空间,也叫row。纵向一列叫column)。旋转不过是其中的一个应用例。可以实现视差滚轴。可以根据层的不同,设定不同的放大率,还可以双轴旋转。还可以制作怪异的变形动画。但是生成table的运算很复杂。为了更方便的完成这个过程,后来出现了3D游戏制作用的库。那个库里包括了自动生成table进行「放大缩小且双轴旋转」处理的函数。
) j# c# J( r% }' b7 K8 W能够「放大缩小且双轴旋转」这样独特的画面效果,可以说是一个有技术水平的厂家才可以耍的任性。! \- \; O1 e5 f
5 w# X x7 D/ _" F
|