【この記事の目標】GLFW/GLADを使用してOpenGLウィンドウを表示する
【動作環境】
・Windows 11
・VisualStudio 2022
・OpenGL 4.6
・GLFW 3.4
・GLAD
【目次】
1. プロジェクト作成
2. GLFW導入
3. GLAD導入
4. VisualStudioのプロパティ設定
5. ウィンドウ表示
1. プロジェクト作成
VisualStudioで空のプロジェクトを作成
2. GLFW導入
下記のサイトからソースファイルをダウンロード
Source packageをクリックしてソースファイルをダウンロードします

CMake導入
※既にCMake導入済みの場合は次の手順に進んでください。
開発環境内でGLFWを使用するにはGLFWライブラリ(glfw3.lib)を用意する必要があります。glfw3.libはGLFWのソースコードをビルドすることで生成されますが、ダウンロード直後の今のままの状態ではVisualStudioの.slnや.vcxprojがないためビルドできません。
そこで、CMakeを導入します。CMakeを使うことでGLFWのCMakeLists.txtからVisualStudio用のソリューションファイルとプロジェクトファイルを自動生成でき、これによりGLFWがビルド可能な状態となります。
下記のサイトからCMakeをダウンロード
CMakeでGLFWのソリューション生成
CMakeを実行する前に実行結果を保存するフォルダ作成しておきます

Where is the soucre code:手順1でダウンロードしたglfw-3.4フォルダを指定
Where is build the binaries:ひとつ前の手順で作成したbuildフォルダを指定

ConigureボタンをクリックするとVisualStudioのバージョンを聞かれる。
バージョン2022を選択し、FinishボタンをクリックするとConfigureがスタートする。

Configure完了
続けてGenerateボタンをクリックしGenerate開始

先ほど作成したbuildフォルダにGLFWのソリューションが生成されていればOKです

GLFWライブラリ生成
~build\src\Debug直下にGLFWライブラリglfw3.libが生成されていればOK

ついでに~include\GLFWにヘッダファイルがあることを確認

3. GLAD導入
下記のサイトからソースファイルをダウンロード
↓の設定を選択※glのバージョンは4.6以上でも問題ないです

少し下にスクロールしてOptions>Generate a Loaderにチェックを入れてGenerateをクリック

glad.zipまたはinclude/srcフォルダをダウンロードしてください

includeフォルダの中身

srcフォルダの中身

4. VisualStudioのプロパティ設定
これまでの手順で用意したGLFW/GLADをVisualStudio側に認識させて使えるようにします。
まず初めにincludeとlibの2つの空フォルダを作成しここに用意したGLFWとGLADのファイルをコピーします。
※私の場合はCドライブ直下にOpenGLフォルダを作成していますが場所はどこでも良いです。

includeフォルダとlibフォルダに手順2,3で用意したファイルをコピーします。
include→glfw-3.4\include\GLFWとglad\include\glad・KHR

lib→glfw-3.4\build\src\Debug\glfw3.lib

手順1で作成したプロジェクトを開き、main関数を記述するcppファイルを新規作成します。私の場合はファイル名をGLMain.cppとしました。


次にプロジェクトのプロパティを開き、以下の3つの項目を設定します。
①C/C++>全般>追加のインクルードディレクトリ
②リンカー>全般>追加のライブラリディレクトリ
③リンカー>入力>追加の依存ファイル
①C/C++>全般>追加のインクルードディレクトリ

1つ前の手順で作成したincludeフォルダを指定しOK→適用


②リンカー>全般>追加のライブラリディレクトリ
インクルードディレクトリと同様にlibディレクトリを指定


③リンカー>入力>追加の依存ファイル

追加の依存ファイルの項目には
glfw3.libとopengl32.libを指定します。opengl32.libはデフォルトでWindows環境に備わっています。


適用→OKでプロパティ設定は完了です。
最後に手順3でダウンロードしたglad.cをプロジェクトに追加します。
OpenGLは実行環境によって使用できる機能が異なるため、どのバージョンを対象とするか、どの言語を使うかなどの仕様を事前に決める必要があります(実は手順3のhttps://glad.dav1d.de/ で行った設定はこの仕様決めのことでした)。
GLADはOpenGLの関数を使えるようにするためのローダーであり、ダウンロードしたglad.c/hはその仕様に基づいて生成されたソースコードです。
そのため、glfw3.libのように汎用的なコンパイル済みライブラリとして配布するのではなく必要に応じて個別にソースコードとして生成し自分の手でコンパイルする必要があります。
5. ウィンドウ表示
最後に以下のソースコードを貼り付けて黒いウィンドウが表示されればOKです。
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
int main()
{
// GLFW初期化
if (!glfwInit()) {
std::cout << "Failed to initialize GLFW" << std::endl;
return -1;
}
// ウィンドウ作成
GLFWwindow* window = glfwCreateWindow(800, 600, "GLApp", nullptr, nullptr);
if (!window) {
std::cout << "Failed to create GLApp window" << std::endl;
glfwTerminate();
return -1;
}
// 作成したウィンドウのOpenGLコンテキストを有効化
// 以降の描画操作はこのウィンドウのコンテキストに対して行われる
glfwMakeContextCurrent(window);
// GLAD初期化
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
// メインループ
while (!glfwWindowShouldClose(window)) {
// 画面クリア
glClear(GL_COLOR_BUFFER_BIT);
// バッファの入れ替え
glfwSwapBuffers(window);
// マウスやキーボードなどのイベント処理
// これがないとウィンドウが応答しなくなる
glfwPollEvents();
}
// 作成したウィンドウを破棄
glfwDestroyWindow(window);
// GLFWライブラリを終了
glfwTerminate();
return 0;
}
実行結果
標準のコンソールウィンドウも一緒に出てきてしまってるのでこっちは非表示にします。
プロジェクトのプロパティを開き以下2つの設定を変更します。
①リンカー>システム>サブシステム
②リンカー>詳細設定>エントリポイント
①リンカー>システム>サブシステム

コンソール→Windowsに変更します

再度実行するとOpenGLウィンドウだけが表示されるようになりました。

これで完了です!お疲れ様でした(;'∀')
最後まで読んでいただきありがとうございました(∩´∀`)∩























