2015年5月23日土曜日

OpenGLのインストール(Visual Studio 2015 & 2013)

OpenGLは、発表されたのが古いながら強力な3DグラフィカルAPIです。Windows8 で Visual Studio 2015にインストールされた例がないことや、参考としたHPのリンクが切れていたりするので、覚書としてインストールの手順を書きます。

1.Visual Studio 2015のインストール
説明を割愛します。

2.GLUTのインストール
参考としたサイト(英語日本語)には、Nate Robins 氏のサイトを見てくださいと書いてありますが、ありません。いつのことからないんですかね?ここを開けば、DLLが手に入り簡単とありますが、ありませんので仕方ありません。コンパイルします。

2.1 ソースの入手

freeglut のソースファイル入手。Versionは、2.8.1がいいです。3.0.0は、VisualStudio用のファイルがなくなっていました。

2.2 プロジェクトファイルの実行

展開後、
VisualStudio->2012->freeglut.vcxproj
を実行。(これで良いのかわからなかったが、最新のものをとりあえず選択)
その後、「プロジェクトとソリューションの変更」をレビューが出るが無視。

2.3 ビルド

・「ビルド」のメニューにある「構成マネージャ」を開く。
・「アクティブソリューションの構成」を「Debug」から「Release」へ変更
・「アクティブ ソリューション プラットフォーム」を 32 ビット版のライブラリを作成するなら "Win32"を選択。64 ビット版のライブラリを作成するには,"x64" を選択。(とりあえず私のマシンは64Bit機なので64を選択したとし、この後を進める。)
メニューの「ビルド」から「freeglut のビルド」を選択。コンパイル開始。

2.4 コピー

<ソースのフォルダ>\freeglut-2.8.1\lib\x64
の中にある、freeglut.libfreeglut.dll というファイルを, それぞれ次の場所にコピー。

freeglut.lib:

C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64
freeglut.dll:
C:\Windows\System32

<ソースのフォルダ>\freeglut-2.8.1\include\GL

の中にある、glut.h freeglut.h freeglut_std.h freeglut_ext.h というファイルを, 次の場所にコピー。

C:\Program Files (x86)\Windows Kits\8.1\Include\um\gl


注(20150627追記)
今回のパスは、環境変数を設定しなくても良い設定なので、freeglut.lib と freeglut.dllについては、コンパイルした場所に置いておき、3のプロジェクトの作成において「プロパティ->linker->Additional Library Directory」でそのフォルダを設定しても可。
また、同様にIncludeも直接接手しても可だが、元々Windows Kitsにglのパスが設定されているため、2重にでることになるので注意。Windows Kitsではフォルダ名がgl(小文字)だが、freeglutでは大文字のため、Visual studioでincludeを入力した時に大文字と小文字の二つがでる。まぁ、統一するために私は大文字で使っている。
(でも、Windows Kitにわざわざ最初からglのパスがある(GL.hとGLU.hしかないが)のに、ライブラリがないんだろ?どこかにあるのかな?どなたか知っていたら教えてください。)

3. プロジェクトの作成

「ファイル」->「新規作成」->「プロジェクト」
Visual C++」の中から「Win32 コンソール アプリケーション」

引用(日本語

freeglut あるいは GLUT 3.7.2 以降と Visual Studio の組合わせなら, ソースファイルで GL/glut.h を #include することで, 自動的に freeglut.lib または glut32.lib, glu32.lib, および opengl32.lib がリンクされます (山下 真 様ご教示ありがとうございました). したがって, このままビルドすれば実行ファイルができあがるはずです.もしうまくいかないようなら, プロジェクトのプロパティ (Alt+F7) を開き, 「構成プロパティ」の「リンカ」の「入力」を選んで, 「追加の依存ファイル」に freeglut.lib または glut32.lib, glu32.lib, および opengl32.lib の三つを追加してください. このほか, 「C/C++」の「プリプロセッサ」を選んで, 「プリプロセッサの定義」に WIN32 が含まれていることを確かめてください (無いことは無いと思いますが). もしなければ追加してください.

4. ウィンドウを開く(コンパイル)

・以下のソースを書いてね。

#include "stdafx.h"

#include <GL/glut.h>

void display(void)

{
}

int _tmain(int argc, _TCHAR* argv[]) // Visual C++ Style

{
glutInit(&argc, argv);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutMainLoop();
return 0;

}

・コンパイル前に「ビルド」のメニューにある「構成マネージャ」を開き、「アクティブ ソリューション プラットフォーム」を"x64" を選択。(ライブラリにX64を選択したので、こうしないと動かない。)

・コンパイル&起動
「デバック」->「デバックの開始」

画面が無事出たら成功!

追記:
コンソール画面がでて嫌なら下記コードを追加

#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

・Window/Linux共用アプリのために、
コンソール画面が嫌になった上記のコードを追加すると、Linuxでは意味がないので、ifdefを使って分離する。また、main関数を変える(参考)。

#include "stdafx.h"
#include <GL/glut.h>

#ifdef __linux__
//linux code goes here
#elif _WIN32
// windows code goes here
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
#endif

void display(void)
{
}

int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}


0 件のコメント:

コメントを投稿