0
我有一個由glVertex3f
組成的高度圖,需要一種方法,我可以使用鼠標在某些點動態更改高度,這與Simcity等創建類似於this youtube clip 。Opengl Screen to coord轉換
這是我的高度圖循環創建地形
for(float x = 0.0; x < MAP_WIDTH; x += d)
{
for(float z = 0.0; z < MAP_HEIGHT; z += d)
{
glColor3f(1.0f,1.0f,1.f);
glBegin(GL_TRIANGLE_FAN);
Color(HeightMap[(int)x][(int)z]);
glVertex3f(x, HeightMap[(int)x][(int)z], -z);
Color(HeightMap[(int)x+d][(int)z]);
glVertex3f(x+d, HeightMap[(int)x+d][(int)z], -z);
Color(HeightMap[(int)x+d][(int)z+d]);
glVertex3f(x+d, HeightMap[(int)x+d][(int)z+d], -z+-d);
Color(HeightMap[(int)x][(int)z+d]);
glVertex3f(x, HeightMap[(int)x][(int)z+d], -z+-d);
glEnd();
}
}
正如你所看到的高度地圖從二維陣列獲得其「高度」的數據。所以當用鼠標點擊地圖時,需要更改2d數組中正確的元素。
我在我的Camera類中使用了gluLookAt
,如果這有什麼區別的話。
- 什麼是最好的方式去做這件事?
- 如何將屏幕座標轉換爲地圖座標?
旁註:我聽說glBegin/glEnd
已被棄用,我會用什麼來代替,或者我根本不需要它?