如何在iPhone上使用openGLES创建水效果视图?

6
我发现了这个视频:http://www.youtube.com/watch?v=eVi6ThY3LRs。我想知道这是否是openGLES的一种标准效果。我相当确定它是,因为我经常看到这种效果。KoiPond使用它,DuckDuckDuck也使用它。很多游戏都在使用它。他们不都是宇航员。他们是普通的程序员;那么这是如何实现的呢?网上有任何教程吗?

1
他们怎么证明自己是普通程序员? - Rog
3个回答

7

如果您想查看旧的示例,请查看“distort”示例。请注意,这是1992年创建的东西(只是在distort.c中查找)。

这是一个令人惊叹的程序,可以在鼠标按下的任何位置在图像中产生涟漪。该程序的另一种模式就像一张橡胶板,可以通过拖动鼠标来拉伸。

我设法在我的Mac上编译了这个示例。

  • 将所有的#include <GL/glut.h>重命名为#include <GLUT/glut.h>
  • idle()函数中添加usleep(33*1000);
  • 将文件ripple_precalc.c重命名为ripple_precalc.c.org(或者直接删除它)
  • 使用“cc *.c -framework GLUT -framework OpenGL”进行编译,将创建一个a.out

谢谢,我会尝试的。你能看一下它是否使用了openGLES不支持的东西吗? - Thanks
我认为这基本上就是JeeBee所描述的,一个由纹理覆盖的网格,网格顶点通过一些数学运算移动,我猜测可能是一些弹簧动力学。请注意,你需要将代码转换以删除glBegin()/glEnd()函数调用... - epatel

2

(我随口猜测)也许是网格扭曲,其中纹理被固定到顶点上,因此当网格顶点移动时,纹理似乎会起波纹。通过在网格周围移动一组顶点位移,您可以制作出类似波前的均匀波纹...


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接