0

我有一个 2400x480 像素的平铺背景。还有一层更远的视差效果。带有 for 循环的绘图背景是否合乎逻辑?

for(int i=0;i<100;i++) {
    //Drawing code like 0+2400*i ...
}
4

1 回答 1

3

我希望这能让你开始,但我真的不知道......

我在下面假设纹理一次显示。由于纹理的大小2400*480 = (3*800)*480——我认为这可能不正确,但无论如何。

对于每一层,您有两个具有固定纹理坐标的四边形。最初,第一个四边形是可见的;在动画过程中,第一个移出屏幕,第二个移入。纹理边框必须匹配,否则会出现裂缝。

+-------------++-------------+
|             ||             |
|             ||             |
+-------------++-------------+
^             ^
   visible

... as time progresses ...
+-------------++-------------+
|             ||             |
|             ||             |
+-------------++-------------+
      ^             ^
         visible

您可以对底层和下一层执行此操作。对不同距离的层使用不同的速度。当有多个图层时,您将需要混合。

如果第一个假设被证明是不正确的,则需要在动画期间修改纹理坐标。有一个全屏四边形,纹理坐标设置为纹理的三分之一。然后,沿同一方向线性平移所有四个坐标,直到碰到顶部。此时,您不知何故需要再次开始显示前三分之一——例如使用第二个四边形。

于 2012-04-16T18:31:14.250 回答