C++ + SDL2 で .glb
を表示するのも「可能」です!
ただし SDL2 は ウィンドウ表示やイベント処理専門なので、3Dモデルの読み込みや描画は別ライブラリと組み合わせる必要があります。
目次
✅ SDL2 + OpenGL + tinygltf の構成が王道
🔧 ライブラリ構成例
役割 | ライブラリ |
---|---|
ウィンドウ管理 | SDL2 |
描画 | OpenGL(または Vulkan) |
GLBローダー | tinygltf |
数学演算 | GLM(OpenGL用Mathライブラリ) |
🔁 処理の流れ
- SDL2 でウィンドウと OpenGL コンテキストを作成
tinygltf
で.glb
を読み込み- 読み込んだメッシュやテクスチャを OpenGL に渡して描画
📦 tinygltfで.glbを読み込む例(抜粋)
tinygltf::Model model; tinygltf::TinyGLTF loader; std::string err, warn; bool ret = loader.LoadBinaryFromFile(&model, &err, &warn, "model.glb"); if (!ret) { std::cerr << "Failed to load .glb: " << err << std::endl; }
その後、model.meshes
などから頂点情報を取得し、OpenGLで描画する処理が必要になります。
📄 SDL2 + OpenGL + tinygltf:全体構成イメージ
main.cpp ├─ SDL_Init / ウィンドウ作成 ├─ OpenGLコンテキスト作成 ├─ tinygltfでGLB読み込み ├─ VBO / VAO / シェーダー設定 └─ メインループで描画処理
🧱 代替:GLTF対応エンジンを使う方法(簡単)
もしあなたが手っ取り早く表示したいだけなら:
- bgfx(GLTF対応の軽量クロスプラットフォーム描画ライブラリ)
- Urho3D(GLTFをサポート)
- OpenSceneGraph(GLTF表示可能)
なども SDL2 と併用可能です。
🧠 まとめ:SDL2で .glb
を表示するには
方法 | 難易度 | 備考 |
---|---|---|
SDL2 + OpenGL + tinygltf | ★★★★☆ | 自作でGLB表示、やりごたえあり |
SDL2 + bgfx | ★★☆☆☆ | bgfxのGLTFサンプルが豊富 |
SDL2 + Urho3D | ★★☆☆☆ | 3Dゲームエンジン風に使える |
💬 要望あれば
- SDL2 + OpenGL + tinygltfのスターターコード
- GLBの読み込みから描画までの一式テンプレート
- シェーダーの書き方やカメラ制御の実装
など、どこまで欲しいか教えてくれたら具体的に出せます!
やってみたい方向ありますか?