OpenGL on the Macintosh / GUI
GLUT を使っている限りは、移植性の高いコードを書くことは簡単です。 実際、私は自分のソースはほぼ無修正で MacOS 9 上(CodeWarriorPro5) と VineLinux-2.0 上 (egcs-2.91.66) でコンパイル & 実行可能です。
しかし、GLUT ではキーボードやマウスのイベントを扱う機能は用意されているのですが、 グラフィカルなインターフェースに関する機能は必要最低限しか用意されていません。 そこで、移植性を損なわずに GUI をくっつける方法をいくつか考えます。
メニュー
GLUT でもメニューが用意されています。 マウスの3ボタンそれぞれにメニューを割り付けることができるようになっていますが、 1ボタンが基本の Macintosh 上での GLUT (Apple SDK) では 右ボタンに割り付けられたメニューのみが "File" メニューの右側につきます。 またメニューを Attach する関数も違います。具体的には以下のようなソースになるでしょうか。
...... (メニューの定義がずらずらっと続いて)
#ifdef MACINTOSH_OPENGL
glutAttachMenuName( GLUT_RIGHT_BUTTON, "Hoge" );
#endif
#ifdef MESAGL
glutAttachMenu( GLUT_RIGHT_BUTTON );,
#endif
また、ウィンドウシステムにより、メニューに使える文字列に制限があります。AppleSDK 提供の GLUT の場合、
/ (スラッシュ) は使えない。っていうか、スラッシュの後の文字がなぜかショートカットの定義になる。
- (マイナス) は使えない。使ってもメニューに表示されない。
( (左括弧) は使えない。使ってもメニューに表示されない。[ (左中括弧?)は大丈夫。
以上のような制限が Apple 提供の OpenGL SDK 上の GLUT で見られます。 Linux + X Window System + MesaGL では以上のような制限は見られません。
2000.07.27
MUI
GLUT には簡単なGUIライブラリとして MUI ( Micro User Interface ) が用意されてはいます。 部品もひととおり揃っているようなのですが、これがなかなか使いにくい。
ドキュメントがない。唯一のリソースはこの A Brief MUI User Guideでしょうか。
MUIのイベントルーチンは glutMainLoop() とは別に回っているようで、 ほとんどのGLUTのコールバックが呼ばれなくなる。 (glutDisplayFunc も含まれる ) つまりGLUTにコールバック関数を登録していく通常のやり方ではMUIとの共存ができない。
なにか方法はあるのかもしれませんが、今のところ見つけていません。
いまのところ、MUI は却下かな....
GLUI
GLUIについては、 本家はこちら。 日本語ではこのページが参考になるでしょう。 要するに GLUT にのっかっているC++ライブラリなので、 GLUTが動いている環境でさえあれば動くというPortability を備えています。
が、素の GLUI を Macintosh でコンパイルしなおしても、なぜかそのままでは動きません。 パッチをあてて動くようにしたものを提供している方がいらっしゃいます。私もこれを 使わせていただいています。
http://www.lim.univ-mrs.fr/~mavroma/OpenGL/index.html
ひとりごと:最初このページの存在を知らず、移植にさんざん苦労してうまくいかず、 Apple が運営するOpenGL開発者ML の過去ログを検索してみても うまくいかない報告ばかり。GLUT のバージョンだとか、実装が不完全とかの議論が 繰返された後、とつぜん「完全に動くGLUI移植したよ」という投稿を発見。 「ようやく解決!」その URL に行ってみると.....なんとフランス語(笑) まぁ、なんとか目的のファイルはダウンロードできましたが。 ソースも一緒にくっついているので、そのうち解析してみたいとは思っています。
Java バインディング
OpenGL の Java バインディングもいくつか存在するようです。 知る限り Macintosh でも動作するのは以下の2つ
JSparrow :
URLは
http://www.pfu.co.jp/jsparrow/index-j.html。HHK で有名なPFUの製作。
Macintosh に移植されたのは 2000.6.13 です。
GL4Java
URLは
http://members.home.net/gziemski/pages/projects/GL4Java.html。
JauSoft のものを Macintosh に移植したもののようです。
jGL
URL は
http://nis-lab.is.s.u-tokyo.ac.jp/~robin/JavaGL/index-j.html。
JavaGL から改名したそうです。メイリングリストも開設されています。詳細は不明。
まだいずれも本格的には触っていませんが、 私の環境(MRJ2.2+CWPro5) では JSparrow は非常に不安定で、 サンプルプログラムのいくつかはクラッシュしてしまいました。 GL4Javaの方は大丈夫のようです。
GtkGL
URLはhttp://www.student.oulu.fi/~jlof/gtkglarea/ です。gtk+ はいまのところ Macintosh に移植されていないようですが、 MacOS X では移植の計画があるので (MacGIMP http://www.MacGIMP.com) 選択肢にはいってくるかもしれません。
2001.01.25

