MinGW + OpenGL

なぜOpenGLを入れたかったのかは謎。
MinGW+OpenGL環境がようやくできました。
必要なライブラリが入ってないだけで、1日苦しみました。あほす。


MSYS環境はまた今度。でもMSYSも解凍してバッチファイルを起動するだけなんだがry
てかここまでできたら後はMSYSを解凍するだけなんだがry
MSYS環境ができたら、FreeGLUT最新版のコンパイルなどなどをやりたい。

導入する

MinGWが使えるのが前提ですが、多分使えなくても大丈夫です。


OpenGLGLUTライブラリの代わりに、開発が割と活発なFreeGLUTライブラリを使います。

FreeGLUTはGLUTと互換性を持っているので、
無事導入できれば、GLUTで開発されたコードをそのまま流用できます。
また、機能の拡張もされており、そのときは、

#include <GL/freeglut_ext.h>

に置き換えるだけで、拡張された機能を使用することができます。


導入にあたり、以下がとても参考になりました。というか、そのまんま。

上記のリンク先の話によると、他にも以下のものが必要らしいです。

GCCC++コンパイラがほしい場合は、以下も追加。


これらをMinGWへ導入した後、
お世話になったリンク先の「freeglut MinGW package」も
適切なフォルダに放り込むだけです。
ただ、freeglut MinGW package内の"include"にglut.hなどが入っていますが、本来は"include\GL"にあるべきファイルなので、ここは手動で移動させます。
同根されているFreeGLUT.dllはスタティックリンクをしないでコンパイルした場合に必要なライブラリです。


この作業をするのがめんどくせえって人向け(外部で使うため。)に、
上のものをすべて入れた環境をうp。
ライセンスとかよくわかりません。自己責任でどうぞ。
後はMinGWフォルダへ放り込むだけで使えるはず。一応これ単体でもコンパイルは行えるはず。
もちろん、pathを通すか設定する必要はあります。


使う

通常コンパイル
gcc "ファイル" -lfreeglut -lopengl32 -lwinmm -lgdi32 -mwindows
スタティックなコンパイル
gcc "ファイル" -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -mwindows
オプションのメモ
  • -D FREEGLUT_STATIC
    • "FREEGLUT_STATIC"を定義する。-lfreeglut_static とセットで使う。(FREEGLUTをスタティックリンクすることを宣言する)
  • -lfreeglut
    • FreeGLUTライブラリ。GLUTの派生(上位互換らしい)。動作にはFreeGLUT.dllが必要。
  • -lfreeglut_static
    • -lfreeglutのスタティック版ライブラリ。こちらを使うとFreeGLUT.dllは内臓されるため不要。
  • -lopengl32
    • OpenGLライブラリ。opengl32.dllの関数を使うために必要。dll自体はWindows標準装備なので付属する必要は無い。
  • -lgdi32
    • WindowsのGDIライブラリ。線を引いたり面を描いたりする。
  • -mwindows
    • 実行時のプロンプト表示を抑制