必要なクラス(Terrain class)を作っていく
🛠 ステップ⑤:Terrain クラスを作ろう!
ゲームに出てくる「地面」や「山」をつくるために、Terrain(テレイン)という 地形クラス を作ります。
これは「地形を作ったり、描いたり、調べたりする便利な道具」だと思ってください。
🧱 1. 必要な情報(メンバ変数)
地形を作るには、「点」や「三角形」、サイズなどの情報が必要です。
class Terrain {
public:
Terrain() = default; // 何も設定しない初期状態のコンストラクタ
void MakeTerrain(); // ← ランダムに地形を作る関数
void Update(); // 地形の更新(今は何もしない)
void Draw(Transform& t); // 地形を画面に描く関数
void SetParams(const TerrainParams& params) { params_ = params; }
private:
std::vector<Vertex> vertices_; // 点のリスト
std::vector<uint32_t> indices_; // 三角形のリスト
ID3D11Buffer* vertexBuffer_ = nullptr; // GPU用の頂点バッファ
ID3D11Buffer* indexBuffer_ = nullptr; // GPU用のインデックスバッファ
ID3D11Buffer* globalCB = nullptr; // 定数バッファ(カメラなどの情報)
TerrainParams params_; // 地形のサイズ・スケール情報など
void CreateBuffers(); // GPUにデータを送る関数
void ComputeNormals(); // 法線(光の方向)を計算する関数
};🔧 2. 地形の設定データ TerrainParams
params_ に入れるデータはこういう構造になっています:
struct TerrainParams {
int width = 128; // 横マス数(点の数)
int height = 128; // 縦マス数
float scale = 1.0f; // 1マスの大きさ(メートル)
float heightScale = 10.0f; // 高さの最大値
};📌 3. Vertex とは?
点(頂点)は Vertex という名前で、こう定義されています:
struct Vertex {
DirectX::XMFLOAT3 position; // 座標(どこにあるか)
DirectX::XMFLOAT3 normal; // 法線(光の方向)
DirectX::XMFLOAT2 uv; // UV(テクスチャの貼る場所)
};💡 補足:DirectXに必要なもの
地形を表示するには、DirectXの以下の機能を使います:
- 頂点バッファ(点の情報)
- インデックスバッファ(三角形のつなぎ方)
- テクスチャ(見た目の模様)
- 定数バッファ(カメラやライトの情報)
✅ ここまでのまとめ
名前 | 役割 |
|---|---|
| 地形を作る・表示するクラス |
| 1つの点の情報(位置など) |
| 地形全体のサイズやスケール |
| 点の集まり |
| 三角形のつなぎ方 |
| 地形を画面に表示する関数 |
No Comments