OpenGL
GLFW
VisualStudio2013
VisualStudio2015
More than 3 years have passed since last update.


まえおき


動機

Visual Studio で利用できるNuGetを利用したら、想像以上に短時間でGLFWを利用したプロジェクトが作成できたので記事にすることにしました。


対象者

Visual Studioを利用している方で、GLFWを導入したい方。

インターネットに接続されている方。


環境

Visual Studio 2015(2013でも一応確認)

Windows7


謝辞

本記事は床井先生の情報を参考に執筆いたしました。また、ソースコードは床井先生のコードをパク…参考にしたと思います。昔書いたコードを移植しただけなので、覚えておりません。

よろしければ、以前書いたGLFW導入の記事をどうぞ。

GLFWを導入する


さっそく本題

流れ

1. プロジェクトを作成する

2. NuGetパッケージマネージャからGLFWをインストール

3. OpenGLライブラリのリンク設定

4. ビルド&実行


1. プロジェクトを作成する

Visual Studioのメニューから、ファイル新規作成プロジェクトを選ぶ

WS000059.JPG

今回はWin32コンソールアプリケーションを指定。

WS000060.JPG

ちょっと事情があって、空のプロジェクトにしました。

WS000061.JPG

これにてプロジェクト作成完了


2. NuGetパッケージマネージャからGLFWをインストール

ソリューションエクスプローラにある作成したプロジェクトを右クリックし、NuGetパッケージの管理 を選択する

WS000062.JPG

NuGetパッケージマネージャの検索窓にglfwと入力すると、絞り込まれる。

glfwのパッケージを選択し、右側にあるインストールボタンを押下する。この時バージョンに希望があれば、指定する。

WS000063.JPG

インストールする前に、確認がでるので、よければOK。

WS000064.JPG


3. OpenGLライブラリのリンク設定

GLFWを利用する際には必ず(?)OpenGLを利用するので、OpenGLのライブラリをリンクしなければならない。そこで、プロジェクトプロパティを開き、構成プロパティ->リンカ->追加依存ファイルopengl32.libを追加する。

WS000065.JPG


4. ビルド&実行

ここまでで設定完了です。あとはどしどしコードを書いて実行してください。とりあえず、今回は下記のソースコードで動作の確認をしました。

以前書いたGLFW導入の記事から拝借しました。

GLFWを導入する


main.cpp

#include <iostream>

#include <GLFW/glfw3.h>

int main()
{
if (glfwInit() == GL_FALSE)
{
std::cerr << "Can't initilize GLFW" << std::endl;
return 1;
}

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

GLFWwindow *const window = glfwCreateWindow(640, 480, "SAMPLE", NULL, NULL);
if (window == nullptr)
{
std::cerr << "Can't create GLFW window." << std::endl;
glfwTerminate();
return 1;
}

glfwMakeContextCurrent(window);

glClearColor(1.0f, 1.0f, 1.0f, 0.0f);

while (glfwWindowShouldClose(window) == GL_FALSE)
{
glClear(GL_COLOR_BUFFER_BIT);

glfwSwapBuffers(window);

glfwWaitEvents();
}

glfwTerminate();
}


白い画面にウィンドウタイトルが"SAMPLE"と出れば成功です。

WS000067.JPG


おわりに

とっても簡単に導入することができました。以前、大学の授業で多数の学生相手に、ライブラリのダウンロード、適切な場所への移動、パスの追加などなど、非常にミスが多発し、頭が痛くなりましたが、これで少し問題が解消できそうです。