========================================================================== glclock の使い方について 1999年7月 Masa(川瀬 正樹) E-Mail: masa@daionet.gr.jp URL : http://www.daionet.gr.jp/~masa ========================================================================== ●このドキュメントについて glclock の実行方法、操作方法、お薦めコマンドなどを紹介、説明します。 面倒だとは思いますが、一回は目を通して頂けると幸いです。 -- ●実行方法 コンソールから glclock または "metalclock" など、用意してあるスクリプト(Windowsではショートカット) で実行します。これらスクリプトについての詳細は後に述べます。 Windowsでは、アイコンのダブルクリックで OK です。 -- ●操作方法 ○マウス左ボタン ドラッグすると、その方向に時計が回転します。 離すと少しずつ減速します。 カーソルキーでも同様の操作ができます。 ○マウス右ボタン 上下方向にドラッグすると、時計との距離が変化します。 上方向で遠ざかり、下方向で近づきます。 左右方向にドラッグすると、透視角が変化します。 左方向で広角に、右方向で望遠になります。 ウィンドウの中央付近にドラッグすると、元の状態に戻ります。 ○マウス中央ボタン クリックする度に、時計の蓋が開閉します。 スペースキーでも同様です。 ○'s'キー 時計の回転に急ブレーキをかけます(任意の角度で回転を止められます)。 ○ESC キー glclock を終了します。 -- ●時計の操作・お薦め起動コマンド glclock には、狂ったように多くの起動オプションがあります。 全てを理解し把握しながら実行するのは困難(不可能?)でしょう (^^;; そこで、以下にいろいろな条件でのお薦め起動コマンドを列挙します。 これらのコマンドに追加して必要なオプションを指定すると楽です。 各オプションの意味については、次の、各オプションの説明を参照してください。 引数として整数を与える類いのオプションがあります。 このようなオプションは、基本的に数値が大きいほどリアルで綺麗な時計に なります。 逆に小さい数値を指定すると、速度重視になります。 そのうちいろいろ試してみてください。 ですが、 オプションに入る前に、まずは時計を自由に操作してみましょう。 ●普通に実行 まずは、コンソールから glclock で普通に実行してください(Windows版はアイコンをダブルクリック)。 空色(朝夕なら橙、夜は暗青)のウィンドウが一枚開き、懐中時計が出現します。 マシンパワーがなく動きが遅いと感じる方は、 f_glclock で実行してください。時計が単純になり、速くなります。 ●時計をぐるぐる回す 左ボタンでドラッグすると、その方向に時計を回転できます。 勢いをつけて回すと回りっぱなしになりますが、 時間とともに速度が落ちてきて、いずれ止まります。 's' キーを押すと、押しただけ急激に回転にブレーキがかかります。 ●視点と時計との距離、遠近感を変化させる 今度は、右ボタンでドラッグしてみましょう。 操作がちょっと難しいですが、上下方向にドラッグすると時計の距離が変化します。 上にドラッグすると、どんどん離れます。しまいにゃぼやけて見えなくなります。 下にドラッグすると、反対に近づきます。しまいにゃ通りすぎてしまいます。 ウィンドウの下端から1/10くらいの位置にすると、どアップになるはずです。 うまく操作すると、時計の針や文字盤の細部まで見ることができます。 ●蓋の開け閉め(意味無し) 今度は、マウスの中ボタンかスペースキーを押してみてください。 押す度に、時計の蓋を開閉できます。「だからどうした?」という質問は、 胸にしまっておきましょう。(^^;; ちなみに蓋が閉じている状態は、断じて UFO ではありません (^^;;; ●フレームレートの表示 次に、ショートカットや起動スクリプトで実行した場合は既に表示されていると 思いますが、'f' キーを押してみてください。 画面左上に FPS(Frames Per Second)と、さらに標準出力に FPS, TPS(Triangles Per Second)および1回の時計の描画で処理している トライアングル数が出力されます。 ※Windows は、標準出力が破棄されるため、見ることはできません。 ●スクリーンショット 'c'キーでスクリーンショットを撮れます。 実行ディレクトリに glclock_shot.ppm を作成します。 現段階では ppm フォーマット固定、ファイル名も固定です。 ※何度も押すと上書きされます。 ●特殊効果 普通に実行した後、時計を動かしながら 'm' キーを押してみてください。 極端に速度は落ちますが、モーションにブラー(ぶれ)がかかります。 時計が動いている時は、その差は歴然でしょう。 もう一度 'm' で、元に戻ります。 一旦元に戻してから、 今度は 'a' キーを押してみてください。シーン・アンティエイリアシングを行います。 同じく極端に遅くなりますが、 今度は時計の縁なとのジャギー(ピクセルのぎざぎざ)が目立たなくなったはずです。 これももう一度 'a'で元に戻ります。 次は、'n' キーを押してみてください。秒針にだけモーションブラーがかかります。 こちらは、あまりスピードは落ちないはずです。 でも、ほとんど何が変わったのか分かりませんね...(^^;; 秒針のあたりをうまくアップにすると分かる....かなぁ(自信なさげ)...(^^;;;; ●イカすコマンド . . . とりあえず何も言わずに以下のコマンド(スクリプト)で起動してみましょう。 もちろん Windows ではショートカットのダブルクリックで OK です。 ※Windows版は最初に makeshort.exe を実行してください。 glclock のフォルダに以下に示したさまざまなオプション付きの ショートカットが作成されます。 ●ハードウェアアクセラレーションの効かない遅い環境なら f_metalclock f_crystalclock f_woodclock f_marbleclock f_mwclock 「まだまだ遅くてどうしようもないぜ」という人は、 ウィンドウサイズを小さくしてください。 ●ばりばりアクセラレーションが効く環境なら metalclock crystalclock woodclock marbleclock mwclock で試してみてください。 特に下から3つは、非常にリアリスティックなかっくいい時計が描画されるはずです。 これらの起動コマンドは、単にさまざまなオプションを組み合わせて指定して いるだけです。具体的にどのようなオプション指定をしているのかは、 各コマンドをテキストエディタ等で開いて見てください。 Windows版では、各ショートカットのプロパティのリンク先を見てください。 以下では、その他さまざまな実行環境でのオプション指定のコツを紹介します。 ●いろんな時計 基本的には上で紹介した '*clock' スクリプトを使えば良いと思います (Windowsでは、ショートカットのリンク先にオプションを追加)。 marbleclock -d 6 のようなオプションを追加すると六角形の大理石時計になります。 woodclock や marbleclock や mwclock で実行しても まだまだ余裕のある場合は(どんな環境だ!?)、 marbleclock -q 6 などで実行してみてください。 -q には、マシンパワーに合わせて、5〜8 辺りを指定してください。 数が大きいほど、時計を構成するポリゴンメッシュが細かくなります。 速度さえ速ければ、5〜7辺りがお勧めです。 -- ●ベンチマークテストを実行する benchclock というスクリプト(バッチファイル)で、一連のベンチマークテストを実行できます。 いろいろな条件で glclock を起動し、各々の平均の FPS(Frames Per Second)、 TPS(Triangles Per Second)、1フレームの描画で処理しているトライアングル数を 出力します。 結果は、bench.log というファイルに出力されます。 ※OpenGLの描画処理時間だけを計っている訳ではありません。 あくまで他の処理にも影響されていることを念頭に置いてください。 また、ボードによって得手/不得手な処理が大きく異なりますから、 この結果が直接ボードの性能を表しているとは考えないでください。 あくまでも参考程度にしてください。 ベンチマークでは、以下のような内容の時計を実行し、テストを行います。 またそれぞれに対し、ダブルバッファとシングルバッファの二種類でテストします。 1〜 2. 通常のシェーディング時計(光源5個) 3〜 4. ポイントフィルタ環境マッピング(光源なし) 5〜 6. バイリニアフィルタ環境マッピング(光源なし) 7〜 8. トリリニアフィルタ環境マッピング(光源なし) 9〜10. トリリニアフィルタソリッドテクスチャ(光源5個) 11〜12. 加算混合(ADDモード)、トリリニアフィルタ環境マッピング(光源なし) 13〜14. 11,12.の内容×オーバサンプリング6回のモーションブラー 15〜16. トリリニア、ソリッドテクスチャ(光源5個)、加算混合環境マッピング 17〜18. 15,16 の内容でハイクオリティ(約 14,000 トライアングル)な時計 3 以降はテクスチャマッピングを伴うため、ハードウェアアクセラレートできない 環境では特に遅くなります。テクスチャマッピングの速度をテストできます。 4,6,8 を比べることで、フィルタの種類による速度差をテストできます。 8,10 を比べると、光源計算がどれだけ全体速度に影響するか分かります。 10 は、5個の光源でシェーディングしています。 15〜18 はソリッド/環境マッピング、加算描画などのさまざまな処理を行っており、 OpenGLの全体的なパフォーマンスを計れます。 -- ●まがい物スクリーンセーバ -SA オプションをつけると、スクリーンセーバライクなモードで 起動します。ただし、あくまでスクリーンセーバとして利用できるような 設定で起動するだけであり、OS から自動的に起動させることはできません。 glclock とは別に正規のスクリーンセーバが設定されていると、 結果的に多重起動しますので、ご注意ください。 バックが黒のフルスクリーンモードで起動し、適当に動き回ります。 マウスをある程度以上の速度で動かすか、キーボードを操作すると終了します。 ただし、GLUT で制御しているため、一部の特殊キー(Alt etc.)の入力は 受け付けず、終了しません・・・あしからず。 また、 ・-csize 時計のサイズ ・-speed 時計の回転速度 ・-zoom 視野角(広角/望遠) といったスクリーンセーバモード起動時専用のオプションがあります。 これらのオプションの詳細は、●スクリーンセーバ関係オプション を参照してください。 -- ●知っておくと良いこと ○常駐時計として利用する 常駐させておきたい場合は、なるべく処理が軽くなるオプションを指定します。 さらに -sl 500 などとして実行をスリープ(この場合毎フレーム 500ミリ秒ずつ) させておくと、CPU 負荷を遥かに軽減できます。 でもこれを常駐させる根性のある人っていないか...(^^;; ○Windows版は、ショートカットを作成する Windows版では、気に入った起動コマンドを見つけたら、ショートカットにしておく ことをお薦めします。 ショートカットを作成し、そのプロパティを開き、 ショートカットタブのリンク先に、気に入ったオプションを追加します。 -- ●各オプションの説明 以下では、各々のコマンドラインオプションについて説明します。 オプションの表記中、[ ] で囲まれた部分については省略できます。 例えば、-w[idth] は、-w でも -wid でも OK です。 もちろん -width のように全て入力しても構いません。 引数をとるオプションは n(整数)、d(浮動小数点数)、s(文字列) のいずれかで表記します。 これらの表記のないオプション(大文字オプション)は引数をとりません。 ※オプションを使用する場合は、そのオプションの説明を読んでから 実行してください。特に、'※'印の付いた部分は、一度は目を通してください。 ●ウィンドウ関係オプション -w[idth] n ウィンドウの横方向サイズを n で指定します(デフォルトは 320)。 3Dfx Voodoo 用実行モードでは、デフォルトは 640 です。 -h[eight] n ウィンドウの縦方向サイズを n で指定します(デフォルトは 320)。 3Dfx Voodoo 用実行モードでは、デフォルトは 4800 です。 ※Windows版のみ、-w, -h オプションおよび -FU(フルスクリーンで実行)オプションをすべて指定すると、 ディスプレイを -w,-h で指定した解像度に変更して実行します。 例えば glclock -w 640 -h 480 -FU のように指定すると、 640x480 ピクセルのフルスクリーンモードで実行します。 ※エラー処理はしているので特に危険はないはずですが、 明らかに表示の不可能な解像度は指定しないでください。 -xp[osition] n ウィンドウの表示位置の x座標を指定します。 -yp[osition] n ウィンドウの表示位置の y座標を指定します。 -FU[LL] フルスクリーンで実行します。 ※Windows版のみ、このオプションと -w, -h オプションを すべて指定すると、ディスプレイを -w, -h で指定した解像度に 変更してフルスクリーン実行します。 例えば glclock -w 640 -h 480 -FU とすると、640x480 ピクセルの解像度でフルスクリーンになります。 ※エラー処理はしているので特に危険はないはずですが、 明らかに表示の不可能な解像度は指定しないでください。 ※3Dfx Voodoo 用実行モードでは必ずフルスクリーンになります。 -S[INGLE] シングルバッファモードで実行します。 デフォルトではダブルバッファモードになります。 ※通常 OpenGL のダブルバッファモードは、ディスプレイの リフレッシュレートとシンクロしながら実行します。 通常の実行時はこれで良いのですが、ベンチマークを取りたい場合、 より正確な測定をするためにはこのオプションを指定します。 しかし、環境によってはダブルバッファでもシンクロしなかったり、 シングルバッファの方が極端に遅くなったりします(Mesa3D 等)。 その場合は意味無しですね...(^^;; -ti[tle] s ウィンドウのタイトルを指定します。 デフォルトは「glclock-バージョンNo.」です。 ●スクリーンセーバ関係オプション -SA[VER] スクリーンセーバライクなモードで起動します。 ただし、OS からの自動起動などはできません。 正規のスクリーンセーバから見れば通常のアプリケーション と変わりませんので、glclock と別にスクリーンセーバが 設定されていると多重起動します。ご注意ください。 -cs[ize] d スクリーンセーバモード時の、時計の表示サイズを指定します。 d には 0.0〜1.0 程度の値を指定します。 デフォルトは 0.5 です。 0.0 で非常に小さなサイズ、1.0 にすると、ウィンドウの縦 と同程度の巨大なサイズになります。 マイナス値も指定できますが、小さすぎて見えないでしょう(^^; -speed d スクリーンセーバモード時の、時計の回転速度を指定します。 デフォルトは 1.0 です。 -zoo[m] d スクリーンセーバモード時の視野角を指定します。 d には、0.0〜1.2 までの値を指定します。 d が小さい程広角に、大きいほど望遠になります。 デフォルトは 0.5 です。 ●OpenGL環境指定オプション -VOODOO 3Dfx OpenGL の Voodoo、Voodoo2、Voodoo2 SLI に特化したモードで実行します。 ※正確には 3Dfx OpenGL Beta 2.1 (stand alone driver) 用です。 基本的にフルスクリーンとなり、-w、-h オプションで解像度を 指定しないと 640x480 になります。 -3DFXICD 3Dfx OpenGL ICD 用のモードで実行します。 Banshee でもおそらく動きます(動作未確認)。 当然ウィンドウモードで起動できます。 Quake III Compatible Driver が必要かもしれません。 glclock を実行してもアクセラレーションが効かない場合は、 から該当するドライバを入手し、インストールしてください。 ※Quake III Compatible は、Quake III での動作しか確認 されていません。 一般的な OpenGL アプリケーションでは不具合も報告されて いるようです。予めご承知置きください。 ※Voodoo, Voodoo2 でも動作しますが、お勧めできません。 3Dfx OpenGL Beta 2.1 の方をご利用ください(-VOODOO 参照) また、Voodoo Rush は情報不足のため、なんとも言えません。 -RIVA[128] RIVA128 または ZX 用モードで実行します。 具体的にはαグローの使用を禁止します。 -r および -R オプション指定時に効果があります。 -PERMEDIA2 現段階では -RIVA128 と同じです。 -TNT[FIX] RIVA TNT の Z-Buffer バグフィックスモード。 TNT はドライバによっては、 -e 3、-r 2、-s 3 のオプション使用時に描画が乱れます。 これを防ぐために指定します。 具体的にどういう処理をしているか知りたい方は、 -z[offset] オプションをご覧ください。 -RUSH 3Dfx OpenGL の Voodoo Rush 用…のつもりですが、 動作未確認です。 -MESA OpenGL ほぼ互換ライブラリである Mesa Library に 特化した実行モードで起動します。 Windows で Mesa を使って実行する場合に指定してください。 各環境でコンパイルした場合は、コンパイル時に対応するため、 このオプションをつける必要はありません。 -3DFXMESA 3Dfx Mesa Library (Mesa Glide) 用です。 ●時計のクオリティ/形状指定オプション -q[uality] n 時計の全体的な描き込みの品質(細かさ)を指定します。 n には 1〜8 を指定でき、1 で最も単純に、 8 で最も細かくなります(デフォルトは 4)。 ※ n が小さいほど速度は向上します。 -e[nv] n 環境マッピングを実行します。 n には、0〜3 までの値を指定します。 0 : デフォルト。環境マッピングを行なわずに 時計自身の素材でシェーディングします。 1 : テクスチャの色を、時計の色と光源0(-bgcolor参照)の色で 変調して描画します(鏡時計) 2 : うーんまだちょっと甘い。 1 をもう少しくっきり綺麗にした 感じになるはずが、あまり変わってません。 そのくせレンダリングには倍ほど時間がかかります。 3 : 環境マッピングとシェーディングを重ね描画します。 半分映り込んだようになり写実性は向上しますが、 レンダリングにはやはり時間がかかります。 -s[olid] n 疑似的なソリッドマッピングを実行します。 現段階では、ただのプレーンマッピングです。(^^;; -e 同様、n には 0〜3 までの値を指定します。 0 : デフォルト。ソリッドマッピングを行ないません。 1 : テクスチャの色を、時計の色と光源0(-bgcolor参照)の色で 変調します。シェーデイングを一切行なわないため、 立体感はなくなります。 2 : テクスチャをシェーディングで変調します。 厳密ではありませんが、立体感が出ます。 3 : テクスチャマッピングを拡散反射だけでシェーディングし、 その後ハイライトだけを上からラップします。 ニスがけしたような素材になり、写実性は向上しますが、 レンダリングにかなり時間がかかります。 -r[eal] n 写実性重視オプション。 ソリッドマッピングに環境マッピングを加算描画し、 テッカテカでリアルな時計を描画します。 -e や -s オプションとは次元が違うくらいかっこよくなります! しかし、OpenGL対応ハードウェアの環境でないとやってられません。 n には 0〜2 を指定できます。 0 : デフォルト。オプションは無効です。 1 : ソリッドマッピングに環境マッピングを重ねます。 拡散シェーディングは行わないため、多少立体感に欠けます。 2 : ソリッドマッピングで拡散シェーディングし、 さらに環境マッピングでハイライトを表現します。 相当リアルになりますが、もっとも遅くなります。 ※全体的な素材は、ソリッドマッピングによります。 例えば -sf marble を同時に指定すると リアルな大理石時計になります。 -sf はソリッドマップ画像を指定するオプションです。 -sf オプションの説明を参照してください。 -C[RYSTAL] クリスタルな(?)時計を描画します。 環境テクスチャのカラーによって どんどん重ね合わせて(加算混合)描画します。 シェーディング(陰影付け)は行いません。 ※ -e, -s, -r, -C は互いに排他的なオプションです。 これらのオプションを同時に指定することはできません。 -ef[ile] s 環境マッピングに使用する画像ファイルを指定します。 デフォルトは付属の sky.ppm です。 -e または -r で 1 以上が指定されているか、 -C オプションが指定されていないと無意味です。 -sf[ile] s ソリッドマッピングに使用する画像ファイルを指定します。 デフォルトは付属の wood.ppm です。 -s または -r で 1 以上が指定されていないと無意味です。 ※ -r オプション指定時のみ、 このオプションはコマンドライン中2回まで指定できます。 2回指定すると、2回目に指定した画像は文字盤に使用されます。 つまり、文字盤とそれ以外で別のテクスチャを使用できます。 1回しか指定しなかった場合はどちらも同じテクスチャになります。 glclock -r 2 -sf marble … 全体を大理石のイメージで描画 glclock -r 2 -sf marble -sf wood … 文字盤だけは木目で描画 それ以外は大理石で描画 ※テクスチャマッピングに使用する画像ファイルは、 現在のところ ppm フォーマットしか対応していません。 拡張子 ".ppm" は省略できます。 -R[EFLECT] -r オプション指定時、文字盤上のオブジェクトを 文字盤へ映り込ませます(細かいことは気にしない(^^;;)。 -n[width] d 時計針の幅変更オプション d には 0.0 以上 3.0 以下の値を指定できます。 デフォルトは 1.0 です。 ●3D描画のクオリティ etc.(実験用、学習用に使えるものなど) -a[nti] n シーン・アンティエイリアシングを適用します。 ウィンドウのピクセル内で視野をずらし、 n 回のレンダリング結果を平均化することで、 ジャギーを目立たなくします。 n には 0,2〜6,8,9,12,16 のいずれかを指定できます。 0(デフォルト)はアンティエイリアシングを行ないません。 ※実行中に'a'キーでいつでも機能を ON/OFF できます。 この時、デフォルト(-a 0 または -a オプションなし)の場合は 自動的に 8 回に再設定されます。 -a で 1 以上の回数を指定していた場合は、その回数になります。 -m[otion] n モーションブラーを適用します。 疑似的によく使われている、いわゆる残像効果ではなく、 時間方向のアンティエイリアシングを行ないます。 カメラに例えると、シャッターが開いている時間帯を n 回に分割し、それぞれの瞬間での時計をレンダリングします。 最終的な画像は n 回の平均となります。 間の座標や角度は単なる線形補間で求めているため、 あまり厳密ではありません。 n には 2 以上を指定します。 1 以下はデフォルト値で、モーションブラーを行いません。 ※実行中に'm'キーでいつでも機能を ON/OFF できます。 この時、デフォルト(-m 0 or 1 または -m オプションなし)の 場合は自動的に 6 回に再設定されます。 -m で 2 以上の回数を指定していた場合は、その回数になります。 -sh[utter] d モーションブラー実行時の、シャッタースピードの指定。 -m で説明したカメラのシャッターが開いている時間、 つまりは、フレーム毎の補間率を百分率で指定します. 例えば 0.0 だとブラー効果なし、0.5 で半分補間、 0.9 だとは前回の画像とほぼ連続になります(デフォルトは 0.999) ただし、-e 1, -C(つまりクリスタルとメタルの時計)以外では、 1.0 は特別な意味をもち、前回のフレームの残像が微妙に残ります。 -m 2 -sh 1.0 にすると、一般的ないわゆる残像効果になります。 ※アンティエイリアシングとモーションブラーの品質は、 各々ののレンダリング回数 n によって大きく変わります。 極端に増やさない限りは、基本的に回数がが多い方が画質は向上しますが、 レンダリングに要する時間は少なくとも n 倍になります。 ※ -a と -m の両方を組み合わせて指定することもできますが、 この場合のレンダリング回数は双方の積となりますのでご注意を (^^;; 例えば、glclock -m 6 -a 8 なら 48 回(核爆!) -sm[otion] n 秒針のみモーションブラー 秒針のみにモーションブラー効果をかけます。 しかし、普通に見てるだけではほとんど分かりません。(^^;; -C オプション(クリスタル時計)以外の実行では 擬似的な方法になります。 例によって複数回描画しますが、 この時の描画回数を n で指定します。 n には 2 以上を指定します。 1 以下はデフォルト値で、モーションブラーを行いません。 n が大きいほど画質は向上しますが、描画は遅くなります。 ※実行中に'n'キーでいつでも機能を ON/OFF できます。 この時、デフォルト(-sm 0 or 1 または -sm オプションなし)の 場合は自動的に 8 回に再設定されます。 -sm で 2 以上の回数を指定していた場合は、その回数になります。 -m(通常のモーションブラー)と同時には実行できません。 -ss[hutter] d 秒針モーションブラー実行時の、シャッタースピードの指定。 基本的には -sh[utter] オプションと同じです。 モーションブラーでどのくらいの時間ブレをかけるかを 前回から今回のフレームまでの連続時間の百分率で指定します。 1.0 で前回の時間から連続になり(デフォルト) 0.0 だとブラー効果なしになります。 -v[smooth] n 時計本体の緯度方向(?)のスムージングフラグ。 緯度方向に対するスムージング(法泉ベクトルを隣同士の ポリゴンから平均化して計算)の条件を次の中から指定します。 -1: 用意したパターンに従って(場所によってフラグを変化) スムージングを行います(デフォルト)。 0: スムージングを行いません。 1: 必ずスムージングを行います。 -u[smooth] n 時計本体の経度方向(?)のスムージングフラグ。 経度方向に対するスムージング(法線ベクトルを隣同士の ポリゴンから平均化して計算)の条件を次の中から指定します。 -1: 時計が12角形以上(-d オプション参照)の場合に スムージングを行います(デフォルト)。 0: スムージングを行いません。 1: 必ずスムージングを行います。 ※f_glclock -v 1 -u 1 (時計の形を単純にしてスムージング)などで 実行すると、グローシェーディングによるハイライトの不具合が良く 理解できます。 -fi[lter] s テクスチャに適用する拡大・縮小フィルタを指定します。 デフォルトはトリリニアです。 OpenGL の GL_TEXTURE_MAG_FILTER および GL_TEXTURE_MIN_FILTER の設定で、次のいずれかを指定できます。 N : ポイントサンプリング(フィルタリングなし)。 拡大・縮小双方を GL_NEAREST にします。 L : いわゆるバイリニアフィルタリング。 拡大・縮小双方を GL_LINEAR にします。 NN : ミップマップ。 拡大フィルタを GL_NEAREST に、 縮小フィルタを GL_NEAREST_MIPMAP_NEAREST にします。 NL : ミップマップのリニアフィルタリング。 拡大フィルタを GL_NEAREST に、 縮小フィルタを GL_NEAREST_MIPMAP_LINEAR にします。 LN : バイリニアフィルタリングおよびミップマップ。 拡大フィルタを GL_LINEAR に、 縮小フィルタを GL_LINEAR_MIPMAP_NEAREST にします。 LL : いわゆるトリリニアフィルタリング(デフォルト) 拡大フィルタを GL_LINEAR に、 縮小フィルタを GL_LINEAR_MIPMAP_LINEAR にします。 少々理解しにくいとは思いますが、要するに 1文字目にテクスチャのフィルタを N : NEAREST つまりポイントサンプリング L : LINEAR つまりバイリニアフィルタ 2文字目にミップマップのフィルタを 空白:ミップマップなし N : NEAREST つまりポイントサンプリング L : LINEAR つまりリニアフィルタ でそれぞれ指定するということです。 ハードウェアのフィルタ処理を実装しない環境では、 N にするとかなり描画速度が向上します。 ※Windows95 のソフトウェア描画では、NN および LN フィルタを 指定すると不正終了します。 Windows98 では修正されたようです。 -{ N | L | NN | NL | LN | LL のいずれかを指定 } テクスチャに使用するフィルタを指定します。 指定方法が異なるだけで、-fi[lter]オプションと内容は同じです。 -N … ポイントサンプリング(フィルタなし) -L … バイリニアフィルタ -NN … ポイントサンプリング & ミップマップ -NL … ポイントサンプリング & ミップマップ・リニア -LN … バイリニアフィルタ & ミップマップ -LL … バイリニアフィルタ & ミップマップ・リニア (トリリニアフィルタ:デフォルト) -sp[ecular] d 全体的なスペキュラー(ハイライト)の強さを指定します。 デフォルトは 1.0 です。 -r や -e、-C などのオプションと併用すると ※正常に働きません。 -pm[ode] s 描画プリミティブを指定します。 デフォルトではポリゴンによる描画を行ないます。 P : ポイント、つまり点による描画を行ないます。 L : ライン、つまりワイヤフレームによる描画を行ないます。 F : フィル、つまりポリゴンによる描画を行います。 -p[ers] s OpenGL に、パースペクティブコレクションのヒントを設定します。 F : GL_FASTEST : 最も効率の良いオプションを選択。 N : GL_NICEST : 最も正確、または最高品質のオプションを選択。 それ以外 : GL_DONT_CARE : 選択なし(デフォルト)。 ※OpenGL の動作環境によって解釈のされ方は異なるため、 必ずしも設定した通りにはなりません。 -z[offset] d マルチパスレンダリング時の2回目の描画で Zバッファに使用する z値にオフセットを与えます。 2回以上の描画処理で1枚のポリゴンを表現する場合、 Zバッファの値は前に描画したポリゴンと同じか、 小さく(近く)なっていなければなりません。 OpenGL では基本的にまったく同じになるはずですが、 環境によっては誤差などで大きく(遠く)なる場合があります。 前の描画よりZ値が大きくなってしまうと、 Zテストで陰面と判断され、そのピクセルは描画されません。 このため、描画が乱れてしまいます。 d に 0.0 以外の正の実数を与えると、 (1.0 + d * 当該ポリゴンのZの傾き) で計算できる値を z値から減算してからZテストを実施します。 d には、0.0 より大きく、最大でも 1.0 程度の値を指定します。 この値は試行錯誤で決めるしかないのですが、 実際問題として通常は 0.1 程度で充分です。 大きな数値を指定すると、視点から遠いポリゴンが手前にあると判断され、 逆に描画がおかしくなる可能性があります。 -ss[cale] d ソリッドテクスチャ実行時(-s または -r オプション)の テクスチャの S 座標方向のスケールを変更します。 デフォルトは 41.0 です。 -ts[cale] d ソリッドテクスチャ実行時(-s または -r オプション)の テクスチャの T 座標方向のスケールを変更します。 デフォルトは 41.0 です。 -t[exscale] d ソリッドテクスチャ実行時(-s または -r オプション)の テクスチャの S,T 両方に同じ値を指定します。 -i[size] n テクスチャとして設定する前にイメージをフィルタ処理しながら 縦横それぞれ 2 の n乗 サイズにスケーリングします。 ただし、負の数を指定すると、無条件にシステムがサポートする 最大サイズまで拡大します。 0(デフォルト)は、元の画像ファイルの大きさのまま利用します。 -i 8 と指定すると、256x256 にスケーリングします。 ハードウェアでのフィルタリングを実装していない環境では、 -fi N または -N オプションを指定すると、つまり フィルタリングをなくすと、大幅に速度が向上します。 しかし、画像サイズを大きくしない限り、 サンプリング不足によるジャギーやモアレが目立ちます。 そこで、あらかじめフィルタ処理を施しながらテクスチャの イメージを拡大しておきます。 これにより、擬似的にバイリニアフィルタリングを施したような 効果が得られます。それがこのオプションの目的です。 ※ただし、当然ながらサイズに比例して資源を使います。 また、最初にスケーリングする分、起動に時間がかかります。 ハードウェア非対応の環境でテクスチャマッピングを行う場合、 -q 1 -fi N -i -1 -l 1(各オプション項目参照)を 指定すると劣化も比較的少なく、ずいぶん速くなります。 ※このオプションは、テクスチャにバイリニアフィルタを 施している場合、つまり -fi L or LN or LL オプション指定時には 意味がありません。 また、Mesa3D の gluScale()はフィルタ処理が行われないらしく、 こちらも効果はありません(現段階では、gluScale()で スケーリングを実行しているため)。 ※ハードウェアアクセラレーション対応の環境では このオプションはなるべく使用しないでください -di[ther] n ディザ処理の ON/OFF を指定します。 0 を指定するとディザ処理を行ないません。 0 以外(デフォルト)でディザ処理を行ないます。 -l[ight] n 光源の数を n 個にします。 1(光源0のみ)から 5(デフォルト:光源0と、色付き光源4個) まで指定できます。 ※当然、光源の数が多いほど見栄えは良くなりますが、 速度も遅くなります。 -LO[CAL] OpenGL の、GL_LIGHT_MODEL_LOCAL_VIEWER を適用します。 これを指定すると、シェーディングの際に 視線ベクトルを頂点単位で計算します。 描画速度は低下しますが、写実性は多少向上します。 ※glclock では、擬似的に面の法線ベクトルをずらすなどして、 このオプションを指定しない場合の画質の劣化を軽減しています。 そのため、このオプションによる劇的な変化はありません。 ●ベンチマーク関連オプション -F[PS] FPS を出力します。 1秒または60フレーム毎に FPS(フレーム/秒)を計算し、 FPS を画面左上に表示します。 さらに、FPS、TPS(トライアングル/秒)と、1フレーム中に 処理しているトライアングル数を標準出力に出力します。 実行中に'f'キーを押すと、いつでも出力を ON/OFF できます。 ※Windows版は、標準出力は破棄されるため、 PPS および 構成ポリゴン数を見ることはできません。 ※OpenGLの描画処理時間だけを計っている訳ではありません。 あくまで他の処理にも影響されていることを忘れないでください。 -B[ENCH] ベンチマークモード(?)で起動します。 マウスやキーボードによる操作はできなくなります。 ある程度経つと自動的に終了し、結果を標準出力に出力します。 平均の FPS(Frames Per Second)、TPS(Triangles Per Second)、 1フレームの描画で処理しているトライアングル数を出力します。 benchclock コマンドはこのオプションを利用しています。 ※OpenGLの描画処理時間だけを計っている訳ではありません。 あくまで他の処理にも影響されていることを忘れないでください。 -sl[eep] n CPU 負荷コントロールオプション。 1フレーム描画する度に、n ミリ秒実行をスリープします。 デフォルトは 0(一切スリープしない)です。 スリープしている間は CPU を使いませんので、 常駐させておきたい場合などに負荷を軽減するために使用します。 常駐させるだけなら毎秒1〜2回程度動けば良いので、例えば f_glclock -sl 500 ように実行し、0.5秒スリープさせます。 ●時計メッシュの詳細設定オプション これらのオプションは、-q オプションよりも詳細に時計メッシュの細かさを指定 するものです。-q オプションは内部的に以下のオプションを組み合わせています。 -hed[ron] n 0 : 5分単位の位置で回転する多面体を正八面体にします。 0 以外 : デフォルト。正二十面体にします。 -d[ivide] n 時計本体の形を n 角形にします。 n には 3 以上の数値を指定できます。 デフォルトは 24 です。30 以上にするとほぼ円形に見えます。 -g[lass] n 時計表面のガラス張りの表現方法を指定します。 n には 0〜3 を指定します。 0 : ガラスの描画を一切行ないません。 1 : ハイライトのかけら(?)を回転させます。 デフォルトですが、テクスチャ使用時は 2 に変更されます。 2 : ガラス表面の反射を表現します。 3 : 湾曲したガラスの反射を表現します。 ※ -g 1 は、OpenGL 用のハードを持たない(混合処理が遅い) 環境用です。 できるだけ速度を落とさずに美しく見せるための 強引なオプションで、写実性のかけらもありません。 しかし、スピードの低下も少なく意外とかっくいいので 悪くないと思います(^^;; ただし、テクスチャマッピング実行時は 1 は指定できません。 -bi[t] n 時計針が刻む文字盤上の秒単位の粒々(?)描画の ON/OFF。 0 を指定すると描画しません。 0 以外にすると描画します(デフォルト)。 -me[sh] n 時計の緯度方向の描き込みの細かさを 2 種類から選択します。 0 で単純なモデルを使用します。 0 以外(デフォルト)で複雑なモデルを使用します。 -go[ld] n 時計の周囲に付いている金色の飾りの細かさを指定します。 金飾りは三角錘(四面体)を n 回分割して描画しています。 1回の処理で、構成する三角形を4枚に分割するため、 1つの飾りで 4 の n+1 乗枚のポリゴンを描画することになります。 n には、1 以上を指定します(デフォルトは 1)。 5 以上はやめた方が良いでしょう(^^;; ●その他なんかよう分からんオプション(笑 -tf[ormat] s テクスチャフォーマットの指定 現時点では、s には RGB(RGB 24bit フォーマット)または RGBA(RGBA 32bit フォーマット)のいずれかを指定できます。 通常はほとんど意味はありませんが、例えば 32bit フォーマットしか使えない環境があった場合に役に立ちます。 -ST[OP] 時計は動きません(意味なし)(^^;; -ms[peed] d マウスドラッグの感度を指定します。 デフォルトは 160.0 です。 -NO[LID] 時計の蓋の描画をなくします。開閉(?)はできます。 -bg[color] n 背景色、光源0(複数の光源の内、もっとも影響の強い光源)の色や、 時間によるグラデーションの仕方を指定します。 0 : デフォルト。背景色と光源0の色が時間によってグラデーション。 1 : 背景色は常に夕(朝)焼け(橙色)。光源0は白色。 2 : 背景色は常に夜(暗い青色)。光源0は白色。 3 : 背景色は常に昼(空色)。光源0は白色。 4 : 背景色は黒。光源0は白色。 ※ 0 以外は、光源0の色は白で固定(グラデーションなし)に なります。