我正在使用openGL ES。我已經在程序中加載了一個球,天空盒和一小塊地形。高度檢測 - OpenGL
地形在某些點改變高度。 球在地形上滾動。
我的問題是:有什麼方法可以告訴我地形的高度在球的位置? (球的位置存儲在一個可以使用的變量中)。有沒有任何一種OpenGL ES命令,或者甚至是一個OpenGL命令,我可以基於這些研究?
我正在使用openGL ES。我已經在程序中加載了一個球,天空盒和一小塊地形。高度檢測 - OpenGL
地形在某些點改變高度。 球在地形上滾動。
我的問題是:有什麼方法可以告訴我地形的高度在球的位置? (球的位置存儲在一個可以使用的變量中)。有沒有任何一種OpenGL ES命令,或者甚至是一個OpenGL命令,我可以基於這些研究?
OpenGL是渲染API,它只是借鑑的東西搬上銀幕,僅此而已。所以你不會繞過像地形碰撞檢測和類似的東西。
如果您獲得了紋理的高度圖(例如,您使用從高度圖中獲取的y繪製x-z規則網格)。您可以搜索您的球所在的單元格(或者更好地將球放入兩個三角形中的三角形),然後插入相應的高度值以獲取球體位置處的地形高度。
您是否使用高度貼圖來製作地形?如果是的話,這應該有所幫助:
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/
謝謝,高度圖正是我需要:) – Jon