😺

C言語とOpenGLで作るゲームエンジン開発記録: 全体のイントロダクション

に公開

この記事は、C言語とOpenGL、GLFWを使用した自作ゲームエンジン gl_choco_engine の開発記録です。

記事連載の背景

私は元々、仕事で簡単な3Dモデルを描画するOpenGLアプリケーションを開発していました。
ただ、誰かに指導してもらいながら開発していたわけではないため、下記の疑問を抱えていました。

  • 3Dモデルと2Dモデルが混在したグラフィックアプリケーションはどうやって作るのか?
  • 複数の座標系を持つ3Dモデルを描画する際のデータ構造のベストプラクティスは何か?
  • テキストの描画はどのようにやるのか?
  • GPUへのデータ転送のタイミング、やり方はこれで良いのか?

そんな時に、ちょうど仕事で抱えていたプロジェクトが終了し、ちょっと余裕ができたため、
ゲームエンジンの開発技術を学ぶことでこれらの疑問を解決することにしました。

ゲームエンジンの開発技術は、TravisVroman氏の Kohi Game Engine で学びました。

氏の動画により学んだアーキテクチャ、作り方の手順、データ構造を参考にC言語、OpenGL、GLFWを使用して簡単なゲームエンジンを開発し、IntelのSponza sceneを描画するところまではいきました。

ただ、作る過程の様々なノウハウや考え方を記録していなかったため、もう一度作れと言われたらちょっと難しいという状況に陥ってしまいました。

本連載記事では、Sponza sceneを描画可能なゲームエンジンを再度一から作り直します。その過程を記事として残すことで、将来の自分のための記録にするとともに、グラフィックアプリケーション開発技術のレベルアップをしたいOpenGL初学者の方の参考になればと思い、記事を投稿することにしました。

なお、このゲームエンジンは、UnityやUnrealEngineのような高性能な商用エンジンではありません。私を含めたOpenGL初学者が次のステップとして開発する、小規模で学習寄りのエンジンです。

そのため技術的に至らない点や誤りがあるかもしれません。もし気づかれた点があれば、ぜひコメントなどでフィードバックいただけると助かります。

本連載記事のゴール

この記事の最終的なゴールは、下記の機能を有するゲームエンジンを開発することです。

  • テキストレンダリングが可能
  • UI用の2Dレンダリングと3Dモデルのレンダリングが可能
  • 複数のテクスチャを使用したマテリアルを有するモデルのレンダリングが可能
  • 複数シーンを有し、シーンの切り替えが可能

シリーズの構成

  • Book1: 2D Rendering編(step1_introduction.md)
  • Book2: 3D Rendering編(未実装)
  • Book3: Text Rendering編(未実装)
  • Book4: Sponza Rendering編(未実装)
GitHubで編集を提案

Discussion