2011-09-02 72 views
1

我正在使用openGL ES。我已经在程序中加载了一个球,天空盒和一小块地形。高度检测 - OpenGL

地形在某些点改变高度。 球在地形上滚动。

我的问题是:有什么方法可以告诉我地形的高度在球的位置? (球的位置存储在一个可以使用的变量中)。有没有任何一种OpenGL ES命令,或者甚至是一个OpenGL命令,我可以基于这些研究?

回答

1

OpenGL是渲染API,它只是借鉴的东西搬上银幕,仅此而已。所以你不会绕过像地形碰撞检测和类似的东西。

如果您获得了纹理的高度图(例如,您使用从高度图中获取的y绘制x-z规则网格)。您可以搜索您的球所在的单元格(或者更好地将球放入两个三角形中的三角形),然后插入相应的高度值以获取球体位置处的地形高度。

+0

谢谢,高度图正是我需要:) – Jon

0

您是否使用高度贴图来制作地形?如果是的话,这应该有所帮助:

int Height(BYTE *pHeightMap, int X, int Y)   // This Returns The Height From A Height Map Index 
{ 
    int x = X % MAP_SIZE;     // Error Check Our x Value 
    int y = Y % MAP_SIZE;     // Error Check Our y Value 

    if(!pHeightMap) return 0;    // Make Sure Our Data Is Valid 
    return pHeightMap[x + (y * MAP_SIZE)]; // Index Into Our Height Array And Return The Height 

} 

我们需要将单个数组视为一个二维数组。我们可以使用公式:index =(x +(y * arrayWidth))。这是假设我们将它想像为:pHeightMap [x] [y],否则是相反的:(y +(x * arrayWidth))。

现在我们有了正确的索引,我们将返回索引处的高度(数据在x,y在我们的数组中)。

.. http://nehe.gamedev.net/tutorial/beautiful_landscapes_by_means_of_height_mapping/16006/