OpenGLを使ったゲーム開発を始めるには、まず開発環境を整える必要があります。この記事では、Windows上でVisual Studioを使い、GLFW・GLAD・GLMの3つのライブラリを導入して、OpenGLでの開発をすぐに始められる状態にするまでの手順を解説します。
この記事で構築する環境
最終的に以下の構成が整った状態を目指します。
| 要素 | 使用するもの |
|---|---|
| OS | Windows 10 / 11 |
| IDE | Microsoft Visual Studio Community |
| コンパイラ | MSVC(Visual Studioに付属) |
| グラフィックスAPI | OpenGL 3.3(Coreプロファイル) |
| ウィンドウ管理 | GLFW |
| OpenGL関数ローダー | GLAD |
| 数学ライブラリ | GLM |
前提条件
- C++の基本的な文法がわかる(変数、関数、クラスの概念程度)
- Visual Studioの基本操作ができる(プロジェクト作成、ビルド・実行程度)
手順1: Visual Studioのセットアップ
1. Visual Studio Communityのインストール
- Visual Studio公式サイト(https://visualstudio.microsoft.com) からVisual Studio Communityをダウンロードします
- インストーラーを実行し、ワークロードの選択画面で「C++によるデスクトップ開発」にチェックを入れます
- 「インストール」をクリックして完了を待ちます
このワークロードには、MSVCコンパイラ、Windows SDK、デバッガ、C++標準ライブラリなどが含まれています。
2. プロジェクトの作成
- Visual Studioを起動し、「新しいプロジェクトの作成」をクリックします
- テンプレート一覧から「空のプロジェクト」(C++)を選択し、「次へ」をクリックします
- プロジェクト名を入力します(例:
OpenGLGame) - 保存場所を指定して「作成」をクリックします
プロジェクトが作成されたら、ソリューションエクスプローラーで以下のフォルダ構成を確認しておきましょう。
OpenGLGame/
├── OpenGLGame.sln # ソリューションファイル
└── OpenGLGame/
├── OpenGLGame.vcxproj # プロジェクトファイル
└── (ソースファイルはまだなし)
手順2: GLFWの導入
GLFW(ウィンドウ管理ライブラリ)を導入します。
1. GLFWのダウンロード
- GLFW公式サイト(https://www.glfw.org) にアクセスします
- 「Download」ページに移動します
- 「64-bit Windows binaries」をダウンロードします(例:
glfw-3.4.bin.WIN64.zip)
2. ファイルの配置
ダウンロードしたZIPを展開し、プロジェクトフォルダに dependencies ディレクトリを作成して配置します。
OpenGLGame/
├── OpenGLGame.sln
├── dependencies/
│ └── glfw/
│ ├── include/
│ │ └── GLFW/
│ │ ├── glfw3.h
│ │ └── glfw3native.h
│ └── lib-vc2022/
│ ├── glfw3.lib
│ └── glfw3dll.lib
└── OpenGLGame/
└── ...
3. Visual Studioでのプロジェクト設定
ソリューションエクスプローラーでプロジェクト名を右クリックし、「プロパティ」を開きます。
構成を「すべての構成」、プラットフォームを「x64」に設定してから、以下を変更します。
インクルードディレクトリの追加
「C/C++」→「全般」→「追加のインクルードディレクトリ」に以下を追加します。
$(SolutionDir)dependencies\glfw\include
ライブラリディレクトリの追加
「リンカー」→「全般」→「追加のライブラリディレクトリ」に以下を追加します。
$(SolutionDir)dependencies\glfw\lib-vc2022
リンクするライブラリの指定
「リンカー」→「入力」→「追加の依存ファイル」に以下を追加します。
glfw3.lib
opengl32.lib
opengl32.lib はWindowsに標準で付属しているOpenGLのライブラリです。
手順3: GLADの導入
GLAD(OpenGL関数ローダー)を導入します。GLADはWebサービスで必要なコードを生成してダウンロードする方式です。
1. GLADの生成
- GLAD Generator(https://glad.dav1d.de) にアクセスします
- 以下の設定を選択します
| 設定項目 | 値 |
|---|---|
| Language | C/C++ |
| Specification | OpenGL |
| API gl | Version 3.3 以上(3.3を推奨) |
| Profile | Core |
- 「GENERATE」をクリックします
- 生成された
glad.zipをダウンロードします
2. ファイルの配置
ZIPを展開し、dependencies に配置します。
OpenGLGame/
├── dependencies/
│ ├── glad/
│ │ ├── include/
│ │ │ ├── glad/
│ │ │ │ └── glad.h
│ │ │ └── KHR/
│ │ │ └── khrplatform.h
│ │ └── src/
│ │ └── glad.c
│ └── glfw/
│ └── ...
└── ...
3. プロジェクトへの追加
インクルードディレクトリに追加
「追加のインクルードディレクトリ」に以下を追加します。
$(SolutionDir)dependencies\glad\include
ソースファイルの追加
glad.c をプロジェクトに追加します。
- ソリューションエクスプローラーの「ソースファイル」を右クリック
- 「追加」→「既存の項目」を選択
dependencies\glad\src\glad.cを選択して追加
手順4: GLMの導入
GLM(数学ライブラリ)を導入します。GLMはヘッダーオンリーライブラリのため、導入は最も簡単です。
1. GLMのダウンロード
- GLMのGitHubリリースページ(https://github.com/g-truc/glm/releases) から最新版をダウンロードします
- ZIPを展開して
dependenciesに配置します
OpenGLGame/
├── dependencies/
│ ├── glad/
│ ├── glfw/
│ └── glm/
│ └── glm/
│ ├── glm.hpp
│ ├── vec3.hpp
│ ├── mat4x4.hpp
│ └── ...
└── ...
2. インクルードディレクトリに追加
「追加のインクルードディレクトリ」に以下を追加します。
$(SolutionDir)dependencies\glm
ヘッダーオンリーライブラリのため、ライブラリファイルのリンクは不要です。
手順5: 動作確認
すべてのライブラリが導入できたら、ウィンドウ表示のテストコードで動作確認を行いましょう。
ソースファイルの作成
ソリューションエクスプローラーの「ソースファイル」を右クリックし、「追加」→「新しい項目」から main.cpp を作成します。
以下のコードを入力してください。
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
// ウィンドウサイズ変更時のコールバック
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
glViewport(0, 0, width, height);
}
// キー入力のコールバック
void processInput(GLFWwindow* window)
{
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window, true);
}
int main()
{
// GLFWの初期化
if (!glfwInit())
{
std::cerr << "GLFWの初期化に失敗しました" << std::endl;
return -1;
}
// OpenGLのバージョンとプロファイルを指定
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// ウィンドウの作成
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL Game", nullptr, nullptr);
if (!window)
{
std::cerr << "ウィンドウの作成に失敗しました" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
// GLADの初期化(OpenGL関数のロード)
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cerr << "GLADの初期化に失敗しました" << std::endl;
return -1;
}
// メインループ
while (!glfwWindowShouldClose(window))
{
// 入力処理
processInput(window);
// 画面をクリア(暗い青緑色で塗りつぶし)
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// バッファのスワップとイベントの処理
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
ビルドと実行
- ツールバーのプラットフォームが「x64」になっていることを確認します
- F5キーを押してビルド・実行します
- 暗い青緑色のウィンドウが表示されれば成功です
- Escキーを押すとウィンドウが閉じます
プロジェクト設定の最終確認
すべてのセットアップが完了した時点で、プロジェクトプロパティの設定値は以下のようになっているはずです。
追加のインクルードディレクトリ
$(SolutionDir)dependencies\glfw\include
$(SolutionDir)dependencies\glad\include
$(SolutionDir)dependencies\glm
追加のライブラリディレクトリ
$(SolutionDir)dependencies\glfw\lib-vc2022
追加の依存ファイル
glfw3.lib
opengl32.lib
dependenciesフォルダの全体構成
dependencies/
├── glad/
│ ├── include/
│ │ ├── glad/
│ │ │ └── glad.h
│ │ └── KHR/
│ │ └── khrplatform.h
│ └── src/
│ └── glad.c
├── glfw/
│ ├── include/
│ │ └── GLFW/
│ │ ├── glfw3.h
│ │ └── glfw3native.h
│ └── lib-vc2022/
│ ├── glfw3.lib
│ └── glfw3dll.lib
└── glm/
└── glm/
├── glm.hpp
└── ...
トラブルシューティング
「glad.h が見つかりません」というエラー
インクルードディレクトリの設定が正しくない可能性があります。以下を確認してください。
- プロジェクトプロパティの構成が「すべての構成」になっているか
- プラットフォームが「x64」になっているか
- パスが
$(SolutionDir)dependencies\glad\includeになっているか
「LNK2019: 未解決の外部シンボル」というリンクエラー
ライブラリのリンク設定を確認してください。
glfw3.libとopengl32.libが「追加の依存ファイル」に含まれているか- 「追加のライブラリディレクトリ」のパスが正しいか
- プラットフォームがx64で、ライブラリも64bit版を使っているか
ウィンドウが表示されずにクラッシュする
GPUドライバーが古い可能性があります。お使いのグラフィックカードのメーカー(NVIDIA / AMD / Intel)の公式サイトから最新のドライバーをダウンロードしてインストールしてください。
「C/C++」カテゴリがプロパティに表示されない
プロジェクトにソースファイル(.cppまたは.c)が1つも追加されていないと、「C/C++」カテゴリが表示されません。先に main.cpp を追加してから設定を行ってください。
まとめ
- Visual Studioで「C++によるデスクトップ開発」ワークロードをインストールし、空のプロジェクトを作成する
- GLFW・GLAD・GLM を
dependenciesフォルダに配置し、プロジェクトプロパティでパスを設定する - GLADは
glad.cをソースファイルとしてプロジェクトに追加する必要がある - GLMはヘッダーオンリーのためインクルードパスの設定だけでOK
- テストコードでウィンドウが表示されれば環境構築は完了
最後までお読みいただき、ありがとうございました!
