2011-09-02 40 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/