で作られた高さマップがありglVertex3f
、マウスを使用して特定のポイントで高さを動的に変更できる方法が必要です。これは、Simcity のようなゲームがこの youtube クリップのような地形を作成するときに行うのとほぼ同じです。
これは、地形を作成するための高さマップ ループです。
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();
}
}
ご覧のとおり、高さマップは 2 次元配列から「高さ」データを取得します。そのため、マウスでマップをクリックすると、2d 配列内の正しい要素を変更する必要があります。
gluLookAt
それが違いを生む場合、私は Camera クラスで使用します。
- これについて最善の方法は何ですか?
- 画面座標を地図座標に変換するにはどうすればよいですか?
補足: 非推奨だと聞きましたglBegin / glEnd
が、代わりに何を使用しますか、それともまったく必要ありませんか?