我有一个 2400x480 像素的平铺背景。还有一层更远的视差效果。带有 for 循环的绘图背景是否合乎逻辑?
for(int i=0;i<100;i++) {
//Drawing code like 0+2400*i ...
}
我希望这能让你开始,但我真的不知道......
我在下面假设纹理一次显示。由于纹理的大小2400*480 = (3*800)*480
——我认为这可能不正确,但无论如何。
对于每一层,您有两个具有固定纹理坐标的四边形。最初,第一个四边形是可见的;在动画过程中,第一个移出屏幕,第二个移入。纹理边框必须匹配,否则会出现裂缝。
+-------------++-------------+ | || | | || | +-------------++-------------+ ^ ^ visible ... as time progresses ... +-------------++-------------+ | || | | || | +-------------++-------------+ ^ ^ visible
您可以对底层和下一层执行此操作。对不同距离的层使用不同的速度。当有多个图层时,您将需要混合。
如果第一个假设被证明是不正确的,则需要在动画期间修改纹理坐标。有一个全屏四边形,纹理坐标设置为纹理的三分之一。然后,沿同一方向线性平移所有四个坐标,直到碰到顶部。此时,您不知何故需要再次开始显示前三分之一——例如使用第二个四边形。