2012-04-09 64 views
0

我有一个2400x480像素的平铺背景。还有一个视差效果的远层。是否用for循环绘制背景逻辑?在opengl中绘制背景的适当方法是什么?

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

错误,所以你有一个平铺的背景?或者是背景一个四边形和瓷砖覆盖它?一块瓷砖是2400x480? – 2012-04-12 04:54:53

+0

@StefanHanke是的,我只有一个大的瓷砖(2400x480),我的角色在它上面移动。我想滚动这个瓷砖。我还有一个远视差层。我如何绘制我的背景? – droidmachine 2012-04-12 19:26:09

+0

@StefanHanke有何评论? – droidmachine 2012-04-15 17:21:15

回答

3

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

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

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

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

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

可以为底层和下一层做到这一点。对不同距离的图层使用不同的速度。当有多个图层时,您将需要混合。

如果第一个假设证明不正确,则需要在动画过程中修改纹理坐标。有一个全屏四边形,纹理坐标设置为纹理的三分之一。然后,将所有四个坐标以同一方向线性转换,直到顶部被击中。此时你需要再次开始显示前三分之一 - 例如使用第二个四分之一。

相关问题