在opengl中绘制背景的适当方法是什么?

时间:2012-04-09 19:45:54

标签: android opengl-es

我有一个2400x480像素的平铺背景。另外还有一个用于视差效果的远层。是否用for循环绘制背景逻辑?

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

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

如果第一个假设被证明是错误的,则需要在动画期间修改纹理坐标。有一个全屏四边形,纹理坐标设置为纹理的三分之一。然后,沿相同方向线性平移所有四个坐标,直到顶部被击中。在这一点上,你需要开始再次显示第一个三分之一 - 例如使用第二个四元组。