OpenGL + どちらの図書館がいいのか?(誤訳)

実験をするにはプログラミングができないと始まらない。
(例外的に、アウトソーシングという選択肢はある、が。)
画像を表示したり、キーの押下を検出して時間を記録したり、
基本的にやりたいことはたったそれだけなのだけれど、
Macでどうやったらできるのか、皆目見当が付かない。
Xcodeを使うといいらしいが、それで言語が決まるわけでなし。
いろいろ調べていたのだけれどなかなか埒があかない。
せっかくやる気になっているのにこのハードルの高さとは!


と思って、行き着いたのはすごく丁寧に解説してあって
しかもどこかで見たことのある親切なページ、
MacでOpenGLのプログラムを始める方法


よしこの通りにやってみようと思ったのだけれど、
その前に調べてた他の方法と微妙に違うのが気になった。
OpenGLGLUTを組み合わせるということなのだけれど、
別のところで紹介されていたのは、OpenGLSDLの組み合わせ。
GLUTOpenGL Utility Toolkitの略で、
SDLはSimple DirectMedia Layerの略で、
できることも似てるし、なにが違うのかよく分からない。

OpenGL自体は計算しか行わないので、計算結果をディスプレイへ
表示するためには何か他のライブラリを使って行う必要がある。

  • SDLは画像の表示、音声の再生、(マウスやゲームパッドなど)入力機器の
    コントロールを行うためのライブラリ。タイマーやスレッドなどの機能も提供。
  • GLUTは画像の表示と、(マウスやキーボードなど)入力機器の
    コントロールを行うためのライブラリ。

ゲームを作りたいだけならGLUTは捨ててSDLに絞ればいい。

出典
確かにやりたいことはゲーム作りと同じなんだよね。
でも、この説明だとどっちがいいのかやっぱり分からない。


別の意見もあった。(目的が違うとは思う。)

  • GLUTOpenGL: 大変手軽。また、多くの参考データがウェブにある。
    処理の流れが固定される。MainLoopに入ると戻ってこれない、
    コールバック関数が必須など。
  • SDLOpenGL: 初期コストがややあがる。SDLの初期化も必要になる。
    情報は日本語少なめ。GLUTより自由度が(すこし)上がる。

またSDLだよ! より)


知らない単語が出てきた。コールバック関数ってなに?
ともかく、GLUTはコールバック関数を用い、SDLはループ風な記述らしい。
しかも前者のコールバックは、ポーリング方式というのを使うらしい。

  • ポーリング : 一定の間隔で着信側から発信側に発信要求がないか
    問い合わせを行い、発信要求がある場合に回線接続を行うもの。

うーん。コールバックを使う理由は、
「ライブラリとアプリケーションを区別する」ため。

概念図を見ると、分かったような気がした。
オブジェクト指向っていうことなのか?(ちがうかも。)


でもこれを自分で実装できる感じがしない。
もちろん、いろんなところのサンプルとかを
改変してやりたいことを実現するしかない。
やりたいのは、いつキーが押されたか
判定したいだけなんだけど、コールバックと
ループで書くのってやってることが違うようには
あんまり思えないんだけど、劇的に違ったり
するんだろうか。時間精度が違うとか?


で、結局、実際にやってみないとどっちが
使い勝手がいいのかわからないってこと。
まず動くものを作れにゃなんにもならぬ。
ああ苦しい。出来るか不安だ。でも楽しい。