#author("2016-05-26T03:18:15+00:00","","")
#author("2016-05-26T03:21:47+00:00","","")
***最新のOPENGL環境はどうなっているか? [#sa694eb8]
Windows環境においては、どうもglutの開発が停止してfreeGlutというものに移行しているらしい。現在の最新バージョンは3.00.今が2016年なので1年前にメジャーアップデートしたらしい。ちょうどいいね。

|Freeglut 3.0.0| [Released: 7 March 2015]|
|Freeglut 2.8.1| [Released: 5 April 2013]|
|Freeglut 2.8.0| [Released: 2 January 2012]|
|Freeglut 2.6.0| [Released: 27 November 2009]|
|Freeglut 2.4.0| [Released: 9 June 2005]|
|Freeglut 2.2.0| [Released: 12 December 2003]|
|Freeglut 2.0.1| [Released: 23 October 2003] |

***Libファイルを用意する [#s739348b]
[[公式>http://freeglut.sourceforge.net/]]からリンクをたどると[[http://www.transmissionzero.co.uk/software/freeglut-devel/]]で、コンパイル済みのVC2013用のライブラリファイルを用意してくれてた。

-include(コンパイル用ヘッダーファイル)
-lib/freeGlut.Lib(32bit用)
-lib/x64/freeGlut.Lib(64bit用)
-bin/freeGlut.dll(32bit用、ダイナミックリンク用DLL)
-bin/x64/freeGlut.dll(64bit用、ダイナミックリンク用DLL)

ありがたい、しかしこっちはVC2015なのと将来リコンパイル出来ないとなんか不安なので自分で作っておくことにする。

***自分でコンパイル [#rc8e337a]
旧バージョンにはVCのプロジェクトファイルがついていたのに3.00では、VCのプロジェクトファイルがついてないので自分で登録していく。結果、プリプロセッサの定義なんかがポロポロ抜けているのを探して追加してやる必要ができたけど、そんなに修正箇所は多くない。

まずはスタティックライブラリの新規作成プロジェクトを立ち上げる
 ・Visula Studio2015 >ファイル > 新規プロジェクト >Win32 Project
 ・Win32アプリケーション ウィザード > 次へ > アプリケーション設定 > スタティックライブラリにチェック

&ref("./vc2015trouble.PNG",50%);
この次に押す「完了」ボタンが見えていないので、画面をドラッグするか、TABキーを駆使して画面下にたどり着いて「完了」を押す

***ソースコードの追加 [#te928e7e]
以下のファイル群をVisual Studioに追加。
※ただしandroid,blackberry,egl,osx,x11の各フォルダは除外
 freeglut-3.0.0/src/*.*
 freeglut-3.0.0/src/mswin/*.*
 freeglut-3.0.0/src/util/*.*

&ref("./vc2015tree.png",50%);
つまりこんな感じ。

***コンパイル設定 [#ga79669d]
-追加のIncludeディレクトリに以下を追加
 freeglut-3.0.0/include
相対パスにするとうまく機能しなかった。絶対パスにしたら通った。
相対はうまくいかないので絶対パスもソリューションファイルのある場所からの絶対パスにしたらうまくいった
 $(SolutionDir)\
ココがとっても詳しい [[http://minus9d.hatenablog.com/entry/2014/02/16/230634]]
|$(SolutionDir)|.slnフォルダが置いてあるフォルダのフルパス|C:\somewhere\your_appli\|
|$(ProjectDir)|プロジェクトのフォルダのフルパス|C:\somewhere\your_appli\some_project\|
|$(TargetDir)|ビルドにより生成される.exeファイルが置かれるフォルダのフルパス|C:\somewhere\your_appli\Debug\|
|$(Configuration)|プロジェクトのコンフィギュレーション|Debug か Releaseか|
|$(Platform)|プラットフォーム。|Win32かx64か|
|$(ProjectName)|プロジェクトの名前|some_project|




-プリコンパイル済みヘッダを「使用しない」設定にする
&ref("./vc2015pch.png",50%);


*コンパイルエラー [#g231fc4f]

*** _CRT_SECURE_NO_WARNINGS [#m367598e]
エラーメッセージによると安全でない古い「sprintf系」が使われているので「_CRT_SECURE_NO_WARNINGS」を定義してね、とのこと。

 エラー	C4996	'_snprintf': This function or variable may be unsafe.
 Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS

面倒なのでプリプロセッサに定義した。

***FREEGLUT_BUILDING_LIBの定義がないファイルがある [#s182f5f2]

これも面倒なのでプリプロセッサに定義してもいいし、「gles_stubs.c」のコンパイルで指摘されているので、ヘッダーファイルのinclude前に定義を追加してやってもいい。

gles_stubs.cの3行目
 #define FREEGLUT_BUILDING_LIB  //←コレを追加した
 #include <GL/freeglut.h>
 #include "fg_internal.h"

***WidthValueが定義されていない [#u56dac1d]
xparsegeometry_repl.hの定義が届いていないファイルが有る。

fg_init.cの28行目
 #include <GL/freeglut.h>
 #include "util/xparsegeometry_repl.h" //←コレを追加

***x86 Debugでコンパイルが通らない [#ab1bfb81]
プリプロセッサに以下を追加してやる
 FREEGLUT_STATIC


*** 出来た! [#qd5d1c52]
 1>  freeGlut.vcxproj -> D:\dev\libMake\libMake\x64\Debug\freeGlut.lib
 ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========


***注意点 [#ice71413]
プリプロセッサの定義と、includeディレクトリの追加は構成ごとに設定しなくてはならないので、4種とも全部やっておくこと。

-x86 Debug / Release
-x64 Debug / Release

''プロジェクトを右クリック > プロパティ''
 構成プロパティ > VC++ Directories > Include Directories(includeディレクトリを追加)
 C/C++ > Precompiled Headers > Precompiled Header(Not Using~ に設定)
 C/C++ > Preprocessor >Preprocessor definition「FREEGLUT_BUILDING_LIB;FREEGLUT_STATIC;」を追加