GLFWを導入する

OpenGLを簡単に利用するに当たり、GLFW(とGLEW)を利用することにしました。
今回は64bitアプリケーションとしてビルドまでの導入を軽くまとめたいと思います。

謝辞

和歌山大学の床井先生が執筆しておられる、「GLFW3 の使い方」を参考にさせていただきました。ありがとうございます。

はじめに

以下の投稿は和歌山大学の床井先生が執筆している「GLFW3 の使い方」の導入部分を64ビットアプリケーションでビルドするための手順となっています。
OpenGLにはウィンドウなどの機能がありませんので、外部の機能を利用してウインドウを作成し、OpenGLで描画したフレームバッファの情報を表示する必要があります。
様々なウィンドウライブラリがありますが、今回はGLFWを利用して画面に表示するところまでを紹介します。
授業の関係上、GLEWのインストールも同時に行います。

環境

  1. OS:Windows7(64bit)
  2. IDE:Microsoft Visual Studio 2013 community
  3. GLFW:3.1.1
  4. GLEW: 1.12.0

入手

GLFWとGLEWを入手します。それぞれは以下のリンク先にサイトから入手することができます。

  1. GLFW : http://www.glfw.org/
  2. GLEW : http://glew.sourceforge.net/

GLFWを入手する

上記のサイトを開き、Downloadのページから「64-bit Windows binaries」のボタンを押し、ダウンロードを開始する。
WS000022

GLEWを入手する

上記のサイトを開き、「Windows 32-bit and 64-bit」をクリックしてファイルをダウンロードする
WS000023

インストール

GLFWをインストールする

ダウンロードしたGLFWのファイルglfw-3.1.1.bin.WIN64.zipを解凍し、同名のフォルダを抽出する。

インクルードファイルをコピーする

解凍したフォルダ内のincludeフォルダ内にGLFWというフォルダがあるので、このフォルダを以下のパスにコピーする
glfw-3.1.1.bin.WIN64\include\GLFW
↓コピー
C:\Program Files (x86)\Windows Kits\8.1\Include\um\

ライブラリファイルをコピーする

glfw-3.1.1.bin.WIN64\lib-vc2013\glfw3.lib
↓コピー
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\

GLEWをインストールする

ダウンロードしたGLEWのファイルglew-1.12.0-win32.zipを解凍し、同名のフォルダを抽出する。

インクルードファイルをコピーする

解凍したフォルダ内のincludeフォルダ内にGLというフォルダがある。この中の三つのファイルglew.h, glxew, wglew.hをコピーする
glew-1.12.0\include\GL\上記三つのファイル
↓コピー
C:\Program Files (x86)\Windows Kits\8.1\Include\um\gl\

ライブラリファイルをコピーする

glew-1.12.0\lib\Release\x64\glew32.lib と glew32s.lib
↓コピー
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\

以上で、インストールを終了します。

プロジェクトの作成と設定

プロジェクトを作成する

Visual Studio のプロジェクトを作成します。ウィザードでWin32コンソールアプリケーションを選び、空のプロジェクトにチェックして完了しプロジェクトが出来上がります。
WS000024

ソースファイルを作成する

ソリューションエクスプローラーから、プロジェクトを展開すると、ソースファイルフォルダがあります。このフォルダの上で右クリックし、追加>新しい項目からファイルを追加します。
この時、C++のファイルを追加してください。

64ビット構成の追加と変更

メニューのビルド>構成マネージャを選択し、構成マネージャウインドウを開きます。
WS000029
アクティブソリューションプラットフォームのプルダウンメニューにx64がなければ、新規作成をクリックしてください。
WS000030
新しいソリューションプラットフォームウィンドウから、「新しいプラットフォームを入力または選択してください」をプルダウンを開き、x64を選択してください。
「設定のコピー元」をwin32を選択し、「新しいプロジェクトプラットフォームを作成する」を選んでOKボタンを押してください。
アクティブソリューションプラットフォームにx64が追加されるので、選択すると、64bitのアプリケーションがビルドされます。

プロジェクトのプロパティを設定する

メニューのプロジェクト> ***のプロパティを選択する(****は任意のプロジェクト名)
プロジェクトのプロパティページウィンドウが開いたら、

プリプロセッサの設定

構成プロパティ > C/C++ > プリプロセッサを選択してください。
プリプロセッサの定義の部分をプルダウンし、編集を押します。
WS000032
開いたウィンドウにGLEW_STATICを追加し、OKを押す。
WS000034

ライブラリのリンク

構成プロパティ > リンカー > 入力 の追加の依存ファイルをプルダウンし、編集を押す。
WS000035
開いたウィンドウに利用するライブラリを追加する。今回はglfw3.lib,glew32s.lib,opengl32.libの三つのファイルを追加してOKを押す。
WS000036

以上で、プロジェクトの設定は終了です。

コードを入力し、実行する

先ほど作成しておいた、C++のソースファイルに以下の内容を貼り付け、実行できれば終了です。ご苦労様でした。
白いウインドウが開きます。

#include <iostream>
#include <gl/glew.h>
#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();
}

おわりに

今回はGLFWを64bit環境のアプリケーションをビルドする導入を記録しました。
何かの参考になればと思います。