6

我目前正在尝试一些带有 Android 的 OpenGL ES 2.0 游戏。我的地图是一个二维网格地图,每个位置都有一个高度值。现在我想将每个坐标的高度存储在纹理中,以便在顶点着色器中进行高度查找。

这个想法的好处是我可以生成一个通用三角形网并将其(带有偏移)放置在用户当前正在查看的地图的位置上。由于偏移,我可以省略每次用户移动其视图位置和我将从纹理中读取的高度轮廓时创建一个新三角形网的需要。

现在存在的问题是许多当前的 Android 设备(甚至是 Galaxy S3)不支持顶点着色器中的纹理查找。可悲的是,这完全破坏了我目前的做法。

我的问题:是否有任何其他可能从顶点着色器中的显卡内存中获取数据?如果不直接指定每个顶点的数据,那么每次用户更改视图位置时,会迫使我(据我所知)重新创建高度图。(每次用户更改视图位置时创建高度图会很慢......)

谢谢你的帮助+最好的问候,

安德烈亚斯

4

1 回答 1

3

texture2DLod()函数旨在用于在顶点着色器中进行纹理查找。

请参阅 GLSL ES 规范的第8.7 节纹理查找函数

根据安迪GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS的评论,使用前不要忘记检查texture2DLod()。如果不支持顶点纹理查找,您应该回退到另一个没有此功能的着色器。

于 2013-01-24T13:57:38.750 回答