如何使用OpenGL ES 1.1实现海洋表面效果?

时间:2008-10-07 10:55:59

标签: iphone opengl-es

我正在研究一种发生在海面上的iPhone游戏。有人可以推荐一些示例代码或教程来实现OpenGL中的波形或涟漪吗?

在我写这篇文章时,iPhone仅支持OpenGL ES 1.1,因此不支持着色器或其他奇特效果。

我不需要太花哨的东西。例如,我不需要反思。我不想过度使用设备。我只需要一些看起来像海洋的东西。 (但如果它看起来和Koi Pond一样好的话会很好。)

2 个答案:

答案 0 :(得分:3)

iPhone在功能上与1999年的GPU非常相似(例如NVIDIA Riva TNT 2)。所以你最现实的选择就是混合几个滚动纹理。

E.g。有一个纹理与一些“波浪模式”。将其设置为两个纹理阶段,并以不同的方向/速度滚动(通过纹理矩阵)。设置纹理组合器,将纹理添加到最终结果中(或执行其他操作;此处有大量可能性)。

答案 1 :(得分:3)

将表格的条款加在一起:

a * sin(b * x + c * y + d * t)

每个这样的术语以这种方式产生一组无聊的直波:a是这些波所贡献的振幅(高度),bc控制相对方向和频率(间距),dt(模拟时间)发生变化的情况下沿着那个方向移动波浪。

尝试使用该表单的一些术语,保持t不变,以获得起伏的表面。然后,您可以“调整”系数以获得您喜欢的粗糙程度。一旦你找到了一些你满意的系数,让t变化以使其运动。