本帖最后由 n805 于 2025-1-4 13:47 编辑 & _9 P/ h |- V' O2 H
* t# w1 m1 ]4 |8 U3 }. i, s4 p4 h精灵图也说的差不多了,来说说背景图层。上文提到过,土星能够将包括精灵图在内的五枚图层重叠。: W1 O+ m( w. A5 O4 W$ C% Q, T+ R
( N5 I4 T8 _$ Q% T( O现在我们可以看到,这张图上共有6个图层。在最下方的「渐变层」只能以扫描线为单位设定颜色。没有其他图像输出会放置这样一个图层,相当于红白机的「背景色」图层。它无法设定显示图片,也无法设定重叠时摆放的位置,所以和其他背景图层不同。, j6 p: Y( a" g
4个背景图层,有两个图层是上下左右滚动的普通图层,称它为「基本背景层」。有一面拥有「扩大缩小功能」的背景层,称它为「可放大缩小背景层」。还有一层是拥有包括「放大缩小功能」等「变形」功能的图层,称它为「旋转背景层」。9 y) `8 v+ e, h
这四个图层在重叠时可以自由改变放置顺序。上面的图里面可放大缩小背景层被放在了最下面,实际上放在最上面也是可以的。并且,背景图层之间可以设定半透明。给优先度高的层设定半透明之后就可以看到下面的层。
, `- }, n7 K# V0 u1 j精灵图就像上面已经写到的一样,它是一个特殊的图层。它可以以像素点为单位设定摆放的顺序。当将那个像素点的优先顺序设定在其他背景层之间的时候,看上去就会像是其他的背景层夹在中间。
5 _8 S( u" o7 i! @$ z! M: j: N可旋转背景层是在将显存的数据输出时改变读取显存的时机。刚才提到的变形功能则是利用了这一原理,但通常被称作可旋转背景层。实际上除了旋转,这个背景层还拥有许多功能。
7 y% t8 U- c( M- k- z% b) v4 t先简单介绍下实现旋转的方法。
, K/ h8 d: Z) @- g6 D) m
$ r) ^: q- i0 `' v+ T3 Z电视(这里指显像管电视)的画面是由扫描线来绘制的。扫描线水平进行扫描,从左往右。这是电视的构造原理,扫描线的运动方向无法改变。画面信息的显存(VRAM)从最初的地址依次读取,输出到电视上就会显示出画面。这时,将读取的顺序,读取的地址改变,也就是倾斜地读取显存。那么读取的画面就是会是倾斜的画面。将这个画面交给扫描线,那么倾斜的画面就会出现在电视上。 u3 [7 S7 M, u, o1 L
土星可以对读取显存做设置。不仅可以让画面旋转,还可以以扫描线为单位进行设置。不仅能设定倾斜,还可以设定读取显存的速度。当加快读取的速度时,得到的图像就会缩小;当减慢读取速度时,得到的图像就会放大。还能以扫描线为单位设定读取的位置。不设定读取的倾斜的话,就相当于视差滚轴。
( G1 J4 W- l6 t* K: f这个「以扫描线为单位进行设置」是通过准备与扫描线行数相同的table(在内存里划分出来的一行空间,也叫row。纵向一列叫column)。旋转不过是其中的一个应用例。可以实现视差滚轴。可以根据层的不同,设定不同的放大率,还可以双轴旋转。还可以制作怪异的变形动画。但是生成table的运算很复杂。为了更方便的完成这个过程,后来出现了3D游戏制作用的库。那个库里包括了自动生成table进行「放大缩小且双轴旋转」处理的函数。
9 ?& t) Z ]% F8 [& T. X: K5 b6 D能够「放大缩小且双轴旋转」这样独特的画面效果,可以说是一个有技术水平的厂家才可以耍的任性。$ b6 l& M8 }: e/ x* L
8 ~( B* g( A1 b* ]9 p0 J' u |