============================================================================ glclock マニュアル 2000年6月 Masa(川瀬 正樹) E-Mail: masa@daionet.gr.jp URL : http://www.daionet.gr.jp/~masa ============================================================================ ■■ 目次 ■■ ○ 操作方法  ・基本操作  ・ライティング関係  ・スーパサンプリング関係  ・テクスチャ・フィルタリング関係  ・フォグ関係 ○ コマンドラインオプション  ・ウィンドウ関係オプション  ・スクリーンセーバ関係オプション  ・OpenGL 環境指定オプション  ・デバッグ用/OpenGL 機能制限オプション  ・時計のクオリティ/形状指定オプション  ・3D描画のイフェクト etc.(実験用、学習用に使えるものなど)  ・ライティング関連オプション  ・ベンチマーク関連オプション  ・時計メッシュの詳細設定オプション  ・その他のマイナーなオプション ○ 拡張機能(OpenGL Extensions)のサポートについて  ・マルチテクスチャ  ・セパレート・スペキュラー・カラー  ・テクスチャ・オブジェクト  ・ポリゴン・オフセット  ・ノーマル(法線)・マッピング(テクスチャ座標自動生成の一種)  ・アンアイソトロピック(異方性)・フィルタリング  ・圧縮テクスチャフォーマット ---------------------------------------------------------------------------- ■■ 操作方法 ■■  ● 基本操作   ・マウス左ボタンドラッグ    カーソルキー 時計の回転   ・s 回転の急ブレーキ   ・マウス右ボタンドラッグ 距離/遠近感の変化   ・マウス中央ボタン    スペースキー ふたの開閉   ・f FPS ON/OFF(デフォルト OFF)   ・c スクリーンショット   ・ESC キー glclock 終了  ● ライティング関係   ライティングを行わない時計(metalclock, crystalclock etc.)では無効です。   ・1 〜 8 ライト数変化(デフォルト5)   ・i / o / p 平行光源/点光源/スポットライト(デフォルトは平行光源)   ・l 正確な視線計算(Local Viewer)ON/OFF(デフォルトは OFF)   ・k ライトの回転 ON/OFF   ・j / h ライトの彩度(鮮やかさ)の上昇/低下   ・J / H ライトの彩度(鮮やかさ)をデフォルトに戻す  ● スーパサンプリング関係   複数のレンダリング結果を平均化して最終画像を得るスーパサンプリング処理関係の   操作です。   秒針だけのモーションブラー以外では、かなり速度が低下します。   ハードウェア環境では、metalclock, crystalclok で実行した場合は比較的高速です。   また、基本的に排他的です(どれかを ON にすると他は自動的に OFF になります)。   デフォルトはすべて OFF です。   ・m モーションブラー ON/OFF   ・n 秒針だけのモーションブラー(これだけは高速)   ・a シーン・アンティエイリアシング ON/OFF   ・d デプスオブフィールド(被写界深度)ブラー ON/OFF   ・x / z デプスオブフィールドブラーの大きさの増加/減少   ・X / Z デプスオブフィールドブラーの大きさをデフォルトに戻す  ● テクスチャ・フィルタリング関係   テクスチャを使用しないデフォルトの時計では無効です。   ・t テクスチャ・フィルタの切り替え(ポイントサンプル/バイリニア)   ・y ミップマップ・フィルタの切り替え(なし/ポイントサンプル/リニア)    デフォルト設定であるトライリニア・フィルタリングの場合、    ・テクスチャ・フィルタ … バイリニア    ・ミップマップ・フィルタ … リニア    の組み合わせとなります。   ・u 異方性(Anisotropic)フィルタの ON/OFF(デフォルト OFF)    GL_EXT_texture_filter_anisotropic をサポートしない環境では無効  ● フォグ関係   ・q / w / e / r フォグなし/線形フォグ/指数関数/2乗の指数関数 (デフォルトは線形フォグ) ■■ コマンドラインオプション ■■ 各々のコマンドラインオプションの詳細について説明します。 興味のある方はお読みください。 オプションの表記中、[ ] で囲まれた部分については省略できます。 例えば、-w[idth] は、-w でも -wid でも OK です。 もちろん -width のように全て入力しても構いません。 引数をとるオプションは n(整数)、d(浮動小数点数)、s(文字列) のいずれかで表記します。 これらの表記のないオプション(大文字で始まるオプション)は、基本的に引数を とりません。  ● ウィンドウ関係オプション -w[idth] n ウィンドウの横方向サイズを n で指定します(デフォルトは 320)。 3Dfx OpenGL Beta 2.1 用実行モードでは、デフォルトは 640 です。 -h[eight] n ウィンドウの縦方向サイズを n で指定します(デフォルトは 320)。 3Dfx OpenGL Beta 2.1 用実行モードでは、デフォルトは 480 です。 -FU[LL] フルスクリーンで実行します。 ※Windows 版のみ、このオプションと -w, -h オプションをすべて 指定すると、ディスプレイを -w, -h で指定した解像度に変更して フルスクリーンで実行します。 例えば glclock -w 640 -h 480 -FU とすると、640x480 ピクセルの解像度でフルスクリーンになります。 ※-VOODOO オプション指定時は必ずフルスクリーンになります。 -bpp[ixel] n Windows 専用オプションです。 -FU オプションと同時に指定された場合のみ、ディスプレイの色数 (ビット深度)を設定します。 glclock -FU -bpp 16 と指定すると、フルスクリーンの 16 ビット(通常 65536 色) モードで起動します。 glclock -w 640 -h 480 -FU -bpp 16 の場合は、640x480 の 16 ビットモード、フルスクリーンとなります。 -fu[llscreen] s ディスプレイ解像度、色数(ビット深度)、リフレッシュレートを 同時に設定し、フルスクリーンモードで実行します。 -w, -h, -FU, -bpp オプションをすべて同時に指定するのと似ています。 s には、解像度、色数等を示す文字列を指定します。 フォーマットは 横解像度x縦解像度:色ビット深度@リフレッシュレート です。 glclock -fu 640x480:16@60 と指定すると、可能であれば 640x480 の 16 ビット、60Hz のモードで フルスクリーン起動します。 glclock -fu 640x480:32 と指定すると、可能であれば 640x480 の 32 ビットモードで フルスクリーン起動します。 "640x480" や "640x480@60", ":16@60" といった指定も可能ですが、 解像度と色数は明示的に指定した方が良いようです。 ※GLUT のバージョン 3.7 Beta 以降(Game GLUT 対応)が必須です。 ※Windows 版だけでなく、X-Window 版等でも使用できます。  というか Windows 版ではあまりお勧めしません。 ※このオプションを指定すると、-w, -h, -FU, -fu 等で指定した  オプションはすべて無効になります。 -VGA -w 640 -h 480 -FU とほぼ同義 -SVGA -w 800 -h 600 -FU とほぼ同義 -XGA -w 1024 -h 768 -FU とほぼ同義 -xp[osition] n ウィンドウの表示位置の x座標を指定します。 -yp[osition] n ウィンドウの表示位置の y座標を指定します。 -S[INGLE] シングルバッファモードで実行します。 デフォルトではダブルバッファモードになります。 通常 OpenGL のダブルバッファモードは、ディスプレイの リフレッシュレートとシンクロしながら実行します。 通常の実行時はこれで良いのですが、ベンチマークを取りたい場合、 より正確な測定をするためにこのオプションを指定します。 しかし、環境によってはダブルバッファでもシンクロしなかったり、 シングルバッファの方が極端に遅くなったりします(Mesa3D 等)。 その場合は意味無しですね...(^^;; -ti[tle] s ウィンドウのタイトルを指定します。 デフォルトは「glclock-バージョンNo.」です。 実行中は、FPS (Frames Per Secons), kTPS (kilo-Trisngles Per Secons) がタイトルの左に追加されます。  ● スクリーンセーバ関係オプション -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 環境指定オプション  特定の環境では、ドライバのバグ等により、実行時にエラーが出たり描画がおかしく  なったりします。  このため、glclock ではさまざまな環境用の設定を用意しています。  これを明示的に特定の環境用に設定したい場合に指定します。  デフォルトでは、実行時に自動的に環境を認識して適切な設定で起動しますので、  通常、以下のオプションを明示的に指定する必要はありません。 -NO_AUTO[SELECT] 環境自動認識および自動設定を禁止します。 glclock-6.0 Beta 以降では、デフォルトでは実行時の環境によって 自動的に適切な設定で起動します。 この自動設定を禁止したい場合に指定します。 -VOODOO 3Dfx OpenGL の Voodoo、Voodoo2、Voodoo2 SLI, Voodoo Rush に特化したモードで実行します。 ※正確には 3Dfx OpenGL Beta 2.1 用です。 基本的にフルスクリーンとなり、-w、-h オプションで解像度を指定 しないと 640 x 480 になります。 -3DFXICD 3Dfx OpenGL ICD 用のモードで実行します。 主に Voodoo3、Voodoo Banshee 用です。 もちろんウィンドウモードで起動できます。 3Dfx OpenGL ICD (Quake III Compatible Driver) が必要です。 3Dfx 社 から該当するドライバを入手し、 インストールしてください。 ※Quake III Compatible は、Quake III での動作しか確認されて  いません。  一般的な OpenGL アプリケーションでは不具合も報告されている  ようです。予めご承知置きください。 ※Voodoo, Voodoo2 でも動作しますが、お勧めできません。  3Dfx OpenGL Beta 2.1 の方をご利用ください(-VOODOO 参照)。  また、Voodoo Rush は情報不足のため、なんとも言えません。 -RIVA[128] RIVA128 または ZX 用モードで実行します。 具体的にはαグローの使用と、GL_ONE_MINUS_*_COLOR 系のブレンド ファクタの使用を禁止します。 -r -R オプション指定時に効果があります。 -PERMEDIA2 αグローの使用と、GL_ONE_MINUS_*_COLOR 系のブレンドファクタ および、GL_*_COLOR 系のブレンドファクタの使用を禁止します。 -r -R および -D オプション指定時に効果があります。 -TNT[FIX] RIVA TNT シリーズは、ドライバによっては、マルチパスレンダリング 時にz値に誤差が生まれ、描画が乱れます。 また、時計の形が複雑になった場合に、環境マッピングのテクスチャ 座標生成うまく行われなくなります。これを防ぐために指定します。 -SAVAGE2000 Savage2000 は、線形フォグの計算方法に問題があり、時計がほとんど 見えなくなるようです。 このため、デフォルトが一次指数フォグになります。 Savage2000 以外のデフォルトは線形フォグになります。  ● デバッグ用/OpenGL 機能制限オプション   デバッグやテスト用のオプションおよび、特定の機能の使用を制限するオプション   です。 -log s 実行時ログ出力先(ファイル名)を指定します。 デフォルトでは、Windows 版は glclock.log ファイルに、 Windows 版以外では標準出力に出力されます。 -INT_GL_ERR[OR] OpenGL 内部でエラーが起こった場合、実行をストップします。 環境によってはドライバのバグで間違ったエラーが返ることや、実行に 支障の無いエラーが返ることもあるため、デフォルトではログにエラー 内容を出力するだけで実行を続行します。 -NO_GL_ERR[OR] OpenGL 内部でエラーチェックを一切行いません。 -NOA[GOURAUD] αグロー(α値のグローシェーディング)の使用を禁止します。 通常 -r -R オプション指定にこの機能が使用されますが、 PERMEDIA2, RIVA128/ZX 等では使えないため、 -PERMEDIA2, -RIVA[128] オプションで起動すると自動的に禁止され ます。 -NO_ADDSMOOTH[_BLEND] ブレンドファクタのうち、 (src, dst) = (GL_ONE, GL_ONE_MINUS_SRC_COLOR) の組み合わせを禁止します。 -sb[lend] オプションはかならず 1 にセットされます。 PERMEDIA2, RIVA 128/RIVA 128ZX 等の環境では自動的に禁止されます。 marbleclock や woodclock, mwclock の表示がおかしくなる場合は、 -NO_ADDSMOOTH を指定するか、 -sb 1 を指定してください。 -NO_MULTI[PLY_BLEND] ブレンドファクタのうち、乗算ブレンド (src, dst) = (GL_DST_COLOR, GL_ONE) (src, dst) = (GL_ONE, GL_SRC_COLOR) の2種類の組み合わせを禁止します。 -D オプションは使用できなくなります。 PERMEDIA2 では自動的に指定されます(-D も同時に禁止されます)。 mwclock で、大理石の模様が見えなくなり、白地に細かい模様が入った ような表示になってしまう場合は、まず -db 1 を指定して試してください。 これでも直らない場合は、 -NO_MULTI を指定してください。 -z[offset] d マルチパスレンダリング時(-s 3, -r, -D)の2回目の描画で Zバッファテストに使用するz値にオフセットを与えます。 2回以上の描画処理で1枚のポリゴンを表現する場合、2回目以降の 描画時のz値は、前に描画したポリゴンと同じか、小さく(近く) なっていなければなりません。 これはZテストで陰面と判断されないためです。 OpenGL では、同じ座標で描画すれば全く同じになるはずですが、 環境によっては誤差などで大きく(遠く)なる場合があります。 このような環境では、Zテストで部分的に陰面と誤判断され、ピクセル が一部描画されず、画面が乱れてしまいます。 d に 0.0 以外の正の実数を与えると、 (1.0 + d * 当該ポリゴンのZの傾き) で計算できる値をz値から 減算してからZテストを実行します。 d には、0.0 より大きく、最大でも 1.0 程度の値を指定します。 この値は試行錯誤で決めるしかないのですが、実際問題として通常は 0.1 程度で充分です。 大きな数値を指定すると、視点から遠いポリゴンが手前にあると誤判断 され、逆に描画がおかしくなる可能性があります。 glclock のコンパイル時 OpenGL 環境および ランタイム OpenGL 環境の双方が、 ・OpenGL-1.1 以降 ・GL_EXT_polygon_offset のいずれかをサポートしている必要があります。 -NOCULL[OBJ] glclock では高速化のため、時計の向きによって明らかに見えない ポリゴンを描画しないようにしています(判断はざっとしたものです)。 この処理を禁止し、時計の向きに関わらずすべてのポリゴンを描画 します。 ベンチマーク時は自動的に指定されます。 -AC[CUM] OpenGL のアキュムレーションバッファの作成を明示的に指示します。 スーパサンプリング系(-a, -m, -f オプションや、実行中に 'a', 'm', 'd' キー)のエフェクトをかけても、何も変化がなかったり、 エラーが発生したりする場合に指定してください。 大抵の環境では問題ないようです。 S3 Savage2000 など一部のカードでは、このオプションを指定すると、 ハードウェアアクセラレーションが一切無効になります。 -NOAC[CUM] OpenGL のアキュムレーションバッファの作成を禁止します。 6.0 Beta 2.9 から、デフォルトで指定するように変更しました。 つまり、デフォルトではアキュムレーションバッファを作成しません。 これは、S3 Savage2000 などの一部のカードで、アキュムレーション バッファの作成を明示すると、ハードウェアアクセラレートが無効に なるためです。 上で説明している -AC オプション(上記)も、合わせてご覧ください。 -OpenGL-1.0 OpenGL-1.0 の機能のみを使うように制限します。 -OpenGL-1.1 OpenGL-1.1 以前の機能のみを使うように制限します。 -NO_GL_EXT[ENSIONS] OpenGL Extensions(OpenGL 拡張機能)の使用を一切禁止します。 -NO_multitex[ture] シングルパスで複数のテクスチャブレンディングを行う シングルパス・マルチテクスチャの使用を禁止します。 -r 2 で使用 -maxtexunit[s] n マルチテクスチャ機能の最大ユニット数(テクスチャブレンディング ステージ数)を制限します。 n には最大のテクスチャユニット数を指定します。 3ユニット以上のマルチテクスチャをサポートする環境で -r 2 オプション(woodclock, marbleclock, mwclock 等)と -D オプション(ディティールテクスチャ)を併用した際に、 描画がおかしくなる、もしくはエラーが出る場合は、 -multitexunit 2 を指定してみてください。 -NO_texture_obj[ect] 複数のテクスチャをテクスチャメモリにセットしておき、 それらを高速に切り替えて使用できるテクスチャ・オブジェクトの 使用を禁止します。 -e, -C, -r で使用 -NO_polygon_off[set] ポリゴンの、zテストに使用するz値にオフセットを与え、 誤差による前後判定ミスを軽減するポリゴン・オフセットの機能の 使用を禁止します。 -z で使用 -NO_separate[_specular_color] テクスチャマッピングの後にスペキュラーを加算することで、 1パスレンダリングで綺麗なスペキュラーを表現できる セパレート・スペキュラー・カラーの使用を禁止します。 -s 3 で使用 -NO_texture_filter_ani[sotropic] Anisotropic Texture Filtering(異方性フィルタ)の使用を禁止 します。 -ani で使用 -NO_texgen_ref[lection] フェイク環境マッピングに利用している特殊なテクスチャ座標 自動生成機能の使用を禁止します。 -FAKE で使用 -NO_texture_comp[ression] 圧縮テクスチャフォーマット関連の機能の使用を禁止します。 -NO_texture_compression_s3tc S3TC 系の圧縮テクスチャフォーマットの使用を禁止します。 -NO_texture_compression_FXT1 3Dfx FXT1 系の圧縮テクスチャフォーマットの使用を禁止します。 -NO_拡張機能名称 特定の拡張機能の使用を禁止します。以下の種類があります。 -NO_ARB_multitex[ture] -NO_EXT_multitex[ture] -NO_SGIS_multitex[ture] -NO_EXT_texture_obj[ect] -NO_EXT_polygon_off[set] -NO_ARB_separate[_specular_color] -NO_EXT_separate[_specular_color] -NO_EXT_texture_cube[_map] -NO_NV_texgen_ref[lection] -NO_EXT_texture_filter_ani[sotropic] -NO_ARB_texture_comp[ression] -NO_EXT_texture_compression_s3tc -NO_3DFX_texture_compression_FXT1  ● 時計のクオリティ/形状指定オプション -q[uality] n 時計の全体的な描き込みの品質(メッシュの細かさ)を指定します。 n には 1〜8 を指定でき、1 で最も単純に、 8 で最も細かくなります(デフォルトは 5)。 ※ n が小さいほど速度は向上します。 -e[nv] n 環境マッピングを適用し、金属的な質感の時計を描画します。 n には、1 または 2 を指定します。 1 : テクスチャの色を、時計の色と光源色で変調して描画します (鏡時計)。 2 : 環境マッピングとシェーディングを両方行います。 半分映り込んだようになり写実性はかなり向上しますが、 レンダリングは少し遅くなります。 ただし、glclock のコンパイル時 OpenGL 環境および、 ランタイム OpenGL 環境の双方が、 ・OpenGL-1.1 以降 ・GL_EXT_texture_object extension のいずれかをサポートしている必要があります。 いずれもサポートされていない場合は、-e 1 になります。 -s[olid] n 疑似的なソリッドマッピングを実行します。 ていうか、ただのプレーンプロジェクション(平行投影)マッピング です。 n には 1〜3 までを指定します。 1 : テクスチャの色を、時計の色と光源の色で変調します。 シェーデイングを一切行なわないため、立体感はありません。 2 : テクスチャをシェーディングで変調します。 立体感が出ますが、スペキュラー(ハイライト、光沢)まで テクスチャで変調されてしまうため、スペキュラーが綺麗に描画 されません。 3 : テクスチャマッピングを拡散反射だけでシェーディングし、 その後からスペキュラーを加算します。 ニスがけしたような素材になり、写実性が向上します。 OpenGL のランタイム環境が、 ・OpenGL-1.2 以降 ・GL_EXT_separate_specular_color extension ・GL_ARB_separate_specular_color extension のいずれかをサポートしている場合、高速に処理できます。 いずれもサポートしていない場合は、2パス処理になるため、 ほぼ半分の速度に落ちてしまいます。 -r[eal] n 写実性重視オプション。 ソリッドマッピングに環境マッピングで表現したスペキュラーを ブレンドし、テッカテカでリアルな時計を描画します。 n には 1 または 2 を指定できます。 1 : ソリッドマッピングに環境マップスペキュラーを重ねます。 拡散シェーディングを施さないため、立体感に欠けます。 2 : ソリッドマッピングで拡散シェーディングし、 さらに環境マッピングでスペキュラーを表現します。 かなり写実性の高い描画になります。 glclock のコンパイル時 OpenGL 環境および ランタイム OpenGL 環境の双方が、 ・GL_ARB_multitexture extension ・GL_EXT_multitexture extension ・GL_SGIS_multitexture extension のいずれかをサポートしている場合は、マルチテクスチャ拡張機能 を利用し、より高速に処理できます。 いずれもサポートしない環境では、2パス処理になるため、速度が 低下します。 ※Voodoo シリーズではサポートされているのですが、何故か マルチテクスチャがうまく有効にならないため、恩恵にあずかる ことができません。 全体的な素材は、ソリッドマッピングによります。 例えば -sf marble を同時に指定するとリアルな大理石時計になり ます。 -sf はソリッドマップ画像を指定するオプションです。 -sf オプションの説明を参照してください。 -C[RYSTAL] クリスタル(?)な時計を描画します。 シェーディング(陰影付け)は行いません。 ※ -e, -s, -r, -C は互いに排他的なオプションです。 これらのオプションを同時に指定することはできません。 -FAKE[SPHEREMAP] フェイク環境マッピングを有効にします。 環境マッピング使用時、つまり -e または -r で 1 以上が指定されているか、 -C オプションが指定されている時に、 環境マッピングのテクスチャ座標生成を、より簡易な計算方法で実現 します。 これにより、画質は多少犠牲になりますが、環境マッピングの パフォーマンスが多少向上します。 OpenGL のランタイム環境が、 ・GL_EXT_texture_cube_map extension ・GL_NV_texgen_reflection extension のいずれかをサポートしている必要があります。 いずれもサポートされていない環境では無効です。 ※Mesa Library では GL_NV_texgen_reflection がサポートされて          いますが、多少計算方法に問題があるようで、正常に表示されません。 -R[EFLECT] 文字盤上のオブジェクトを文字盤へ映り込ませます。 -r オプション指定時のみ有効です。 -ref[lect] n -R オプション(文字盤への映りこみ)とほぼ同じです。 -R オプションでは映りこみを ON にすることしか できませんが、こちらはnに与える数値で ON/OFF を制御できます。 0 : 文字盤への映りこみを強制的に OFF にします。 1 : 文字盤への映りこみを ON にします(-R オプションと同じ)。 -R オプションよりも優先されるため、スクリプト実行時に文字盤への 映りこみを OFF にしたい時に利用できます。 -D[ETAILTEX] 通常のテクスチャとは別に細かい模様のテクスチャをブレンドし、 時計表面のより細かい模様を表現します。 時計を大きく拡大してもテクセルの粗さが目立たなくなります。 拡大しないと通常との差がほとんど判らないという話もありますが(^^; また、よりリアルな(写実性の高い)描画になります。 もっとも、綺麗とリアルは意味が違うため、好みは分かれると思います。 -r もしくは -e オプション指定時のみ有効です。 -e オプション時は、マルチテクスチャ拡張機能が必須です。 つまり、glclock のコンパイル時 OpenGL 環境および ランタイム OpenGL 環境の双方が、 ・GL_ARB_multitexture extension ・GL_EXT_multitexture extension ・GL_SGIS_multitexture extension のいずれかをサポートしている必要があります。 ※Windows 版は、ランタイムのサポートのみで使用可能 マルチテクスチャ拡張をサポートしない環境では無効です。 -r オプション時は、最大で3テクスチャをブレンドします。 3ユニット以上のマルチテクスチャをサポートする環境では、 全てのテクスチャを1パスでブレンドできるため、非常に高速です。         ※正常に実行できるかは未確認です(現状で実行環境がないため)。  もし3ユニット以上をサポートしている環境で実行して、何らかの  問題(見た目が明らかにおかしい、不正処理、エラーなど)が発生  した場合は、  -maxtexunit 2  を追加し、テクスチャユニット数を強制的に2に制限してください。  また、その時の現象等ご報告いただけると幸いです。 2ユニットまでのマルチテクスチャをサポートする環境では最大2パス、 マルチテクスチャを一切サポートしない環境では、最大で3パスの レンダリングを行う必要があるため、速度は低下します。 マルチテクスチャ機能を使えない場合、GL_*_COLOR 系のブレンド ファクタを処理できる必要があります。 このため、-NO_MULTI[PLY_BLEND] オプションを指定すると、 -D オプションは無効になります。 また、glclock のコンパイル時 OpenGL 環境および、 ランタイム OpenGL 環境の双方が、 ・OpenGL-1.1 以降 ・GL_EXT_texture_object extension のいずれかをサポートしている必要があります。 -de[tailtex] n -D オプション(ディティールテクスチャ)とほぼ同じです。 -D オプションではディティールテクスチャを ON にすることしか できませんが、こちらはnに与える数値で ON/OFF を制御できます。 0 : ディティールテクスチャを強制的に OFF にします。 1 : ディティールテクスチャを ON にします(-D オプションと同じ)。 -D オプションよりも優先されるため、スクリプト実行時に ディティールテクスチャを OFF にしたい時に利用できます。 -sb[lend] n -r オプション時のスペキュラー(環境マッピング)のブレンド方法を 指定します。 0 : src + dst * (1 - src) デフォルト 1 : src + dst ただし、マルチテクスチャ機能を使う場合は、かならず 0 になります。 逆に、マルチテクスチャを利用できず、かつブレンドファクタの (src, dst) = (GL_ONE, ONE_MINUS_SRC_COLOR) の組み合わせをサポートしない環境では、0 の式は使えず、結果が おかしくなります(黒光りした金属のようになる)。 marbleclock や woodclock, mwclock の表示がおかしくなる場合は、 -sb 1 を指定するか、 -NO_ADDSMOOTH を指定してください。 -db[lend] n -D オプション時の、ディティ−ルテクスチャのブレンド方法を指定 します。 0 : src * 0 + dst * src デフォルト 1 : src * dst + dst * 0 どちらも乗算ブレンディングで理論上まったく同じ結果になります。 しかし、環境によってはどちらか片方しかサポートされていない 可能性があるため、選択可能にしました。 マルチテクスチャ機能を使える場合はこのオプションは無意味です。 mwclock で、大理石の模様が見えなくなり、白地に細かい模様が入った ような表示になってしまう場合は、まず -db 1 を指定してみてください。 それでも直らない場合は、 -NO_MULTI を指定してください(ただし -NO_MULTI を指定すると、-D オプション、 つまりディティ−ルテクスチャ自体が無効になります)。 -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 … 文字盤だけは木目で描画 それ以外は大理石で描画 -ORG[IMAGE] -s, -r オプション指定時に、テクスチャ画像の元のイメージを なるべく残します。 写真やアニメキャラクタなど、元画像のイメージが大きな意味をもつ テクスチャを貼りつけたい場合は、このオプションを指定してください。 比較的元のイメージに近い状態で貼りつけることができます。 -ssa[turation] d ソリッドテクスチャ(-s, -r 時使用)の彩度を変更します。 デフォルトは 1.0 で、0.0 でモノ(明暗のみ)テクスチャになります。 マイナス値を指定すると、反対の色になります。 -sc[ontrast] d ソリッドテクスチャ(-s, -r 時使用)のコントラストを変更します。 デフォルトは 1.0 で、0.0 で灰色一色のテクスチャになります。 マイナス値を指定すると反対の色になります。 -sc -1.0 で、完全に正反対の色(補色、ネガ)になります。 -ef[ile] s 環境マッピングの背景部分に使用する画像ファイルを指定します。 デフォルトは付属の sky.ppm です。 -e または -r で 1 以上が指定されているか、 -C オプションが指定されている時のみ有効です。 -lf[ile] s 環境マップのスペキュラーに使用する画像ファイルを指定します。 デフォルトは付属の light.ppm です。 -e または -r で 1 以上が指定されているか、 -C オプションが指定されている時のみ有効です。 -df[ile] s ディティールテクスチャの画像ファイルを指定します。 -r オプションもしくは -e オプションと同時に -D オプションが指定されている時のみ有効です。 -r オプション時のデフォルトは付属の detail.pgm、 -e オプション時のデフォルトは付属の detail2.pgm になります。 -ip[ath] s テクスチャ画像のファイルの置いてあるディレクトリを明示します。 このオプションで指定されたディレクトリは、もっとも優先的に検索 されます。 デフォルトでは、実行時のカレントディレクトリです。 ※テクスチャマッピングに使用する画像ファイルは、現在のところ ppm, pgm フォーマットしか対応していません。 拡張子 ".ppm", ".pgm" は省略できます。      この場合、同名でファイルが存在する場合は .ppm が優先されます。 -n[width] d 時計針の幅変更オプション d には 0.0 以上 3.0 以下の値を指定できます。 デフォルトは 1.0 です。  ● 3D描画のイフェクト etc.(実験用、学習用に使えるものなど) -a[nti] n シーン・アンティエイリアシングを実行します。 ウィンドウの1ピクセル内で視野をずらし、n 回のレンダリング結果を 平均化することで、ジャギーを目立たなくします。 n には 2〜6,8,9,12,16 のいずれかを指定できます。 実行中に'a'キーでいつでも機能を ON/OFF できます。 -a オプションを指定していなかった場合は、自動的に 8 回になります。 -m[otion] n モーションブラーを実行します。 疑似的によく使われている、いわゆる残像効果ではなく、時間方向の アンティエイリアシングを行ないます。 カメラに例えると、シャッターが開いている時間帯を n 回に分割し、それぞれの瞬間での時計をレンダリングします。 最終的な画像は n 回の平均となります。 n には 2 以上を指定します。 実行中に'm'キーでいつでも機能を ON/OFF できます。 -m オプションを指定していなかった場合は、自動的に 6 回になります。 -sh[utter] d モーションブラー実行時の、シャッタースピードの指定。 -m で説明したカメラのシャッターが開いている時間、 つまりは、フレーム毎の補間率を百分率で指定します. 例えば 0.0 ではブラー効果なし、0.5 で半分補間、 0.9 で前回の画像とほぼ連続になります(デフォルトは 0.999) -s 1, -e 1, -C(metalcloc, crystalclock)以外では、 1.0 だけは特別な意味をもち、前回のフレームの残像が微妙に残ります。 -m 2 -sh 1.0 にすると、一般的ないわゆる残像効果になります。 -f[ield] n デプスオブフィールド(被写界深度)ブラー、いわゆる「ピンぼけ」 を処理します。 ある一定の焦点距離から離れるに従い、序所に像がぼやけます。 n には 2〜5,7,12 のいずれかを指定できます。 実行中に 'd' キーでいつでも機能を ON/OFF できます。 -f オプションを指定していなかった場合は、自動的に 7 回になります。 -fr[ange] d デプスオブフィールドブラー実行時のピンぼけの度合いを 指定します。 1.0 がデフォルトで、大きくするほどピントが強くぼけます。 実行中 'z', 'x' キーで、いつでも調整できます。 'z' でブレが小さく、'x' でブレが大きくなります。 また、'Z', 'X'(SHIFT キーを押しながら)で、デフォルトのブレに 戻ります。 -MULTI[SAMPLE] モーションブラーとアンティエイリアスの同時がけを許可します。 通常、実行中に 'm' および 'a' キーでモーションブラーや アンティエイリアスを実行する場合、これらの機能は互いに排他的 です(一方は自動的に OFF になります)。 これは、同時にかけるとあまりに処理が遅くなってしまうため、 誤って操作してしまった場合に危険だからです。 このオプションを指定しておくと、制限をはずし、これらの機能を同 時にかけることが可能になります。 -m オプションと -a オプションを明示的に両方指定した場合は、 自動的に有効になります。 アンティエイリアス、モーションブラー、デプスオブフィールドなどの いわゆるスーパサンプリング(複数の描画を平均化して1枚の画像を生成する) 処理は、通常 OpenGL のアキュムレーション(積算)バッファを使用します。 しかし、ほとんどの環境では、平均化はソフトウェア処理されるため、 サンプリング回数以上に極端に速度が低下してしまいます。 例外として、 -s 1, -e 1, -C オプションのいずれかのオプションで起動した場合 (metalclock や crystalclock)は、サンプリングの積算にアキュムレーション バッファを使わず、アルファブレンディングのみで処理します。 この結果、多少画質は劣化しますが、ハードウェアアクセラレーションが可能に なるため、これ以外のオプションで起動した場合に比べて遥かに高速に処理 できます(ただしハードウェア使用の場合)。 スーパサンプリング系の機能を使う場合は、metalclock や crystalclock で起動することを強くお勧めします。 ※スーパサンプリング処理の品質は、各々ののサンプリング回数nによって 大きく変わります。 極端に増やさない限り、基本的に回数が多い程画質は向上しますが、 レンダリングに要する時間は少なくとも n 倍になります。 ※ -a と -m の両方を組み合わせて指定することもできますが、この場合の レンダリング回数は双方の積となりますのでご注意を (^^;; 例えば、glclock -m 6 -a 8 なら 48 回(核爆!) ※ -s 1, -e 1, -C オプション以外の実行モードでスーパサンプリング系の  エフェクトを実行した時(つまりアキュムレーションバッファ使用時)、  まったく変化が現れない場合やエラーで終了してしまう場合は、  -AC オプションを指定してみください。  詳細は -AC[CUM] オプションを参照してください。 -sm[otion] n 秒針のみモーションブラー。 秒針のみにモーションブラー効果をかけます。 しかし、普通に見てるだけではほとんど分かりません。(^^;; -C オプション(クリスタル時計)以外の実行では擬似的な方法 (残像効果)になります。 例によって複数回描画しますが、 この時の描画回数を n で指定します。 n には 2 以上を指定します。 1 以下はデフォルト値で、モーションブラーを行いません。 n が大きいほど画質は向上しますが、描画は遅くなります。 実行中に'n'キーでいつでも機能を ON/OFF できます。 -sm オプションを指定していなかった場合は、自動的に 8 回に なります。 ※-m(通常のモーションブラー)と同時には実行できません。 -ss[hutter] d 秒針モーションブラー実行時の、シャッタースピードの指定。 基本的には -sh[utter] オプションと同じです。 モーションブラーでどのくらいの時間ブレをかけるかを前回から今回の フレームまでの連続時間の百分率で指定します。 1.0 で前回の時間から連続になり(デフォルト)、 0.0 だとブラーなしになります。 -v[smooth] n 時計本体の緯度方向(?)のスムージングフラグ。 緯度方向に対するスムージング(法泉ベクトルを隣同士のポリゴンから 平均化して計算)の条件を次の中から指定します。 -1: 自動。用意したパターンに従って(場所によってフラグを変化) スムージングを行います(デフォルト)。 0: スムージングを行いません。 1: 必ずスムージングを行います。 -u[smooth] n 時計本体の経度方向(?)のスムージングフラグ。 経度方向に対するスムージング(法線ベクトルを隣同士のポリゴンから 平均化して計算)の条件を次の中から指定します。 -1: 自動。時計が12角形以上(-d オプション参照)の場合に スムージングを行います(デフォルト)。 0: スムージングを行いません。 1: 必ずスムージングを行います。 -gs[mooth] n 金飾り(?)のスムージングフラグ。 時計の周辺に付いている金飾りの(法泉ベクトルを隣同士のポリゴン から平均化して計算)の条件を次の中から指定します。 -1: 自動。テクスチャマッピング適用時のみスムージングを 行います(デフォルト)。 0: スムージングを行いません。 1: 必ずスムージングを行います。 ※スムージングを行うと、見た目を実際のポリゴン構成よりも滑らかに見せる  ことができます。  しかし、必要以上に多用すると、描画上の矛盾(不自然さ)が目立ち、逆に  画質が低下することになります。  glclock_L -v 1 -u 1 (時計の形を単純にしてスムージング)などで実行  すると、グローシェーディングによるハイライトの不具合が良く理解できます。 ※これら -*smooth 系のオプションは、いわゆるフラット(コンスタント)  シェーディングとスムーズシェーディングの切り替えではありません。  法線情報を周りのポリゴンから平均化するかしないかの違いです。  3D描画処理上は、いずれもスムーズシェーディング(グローシェーディング)  になり、光源処理も頂点単位に行われます。  スムージングを OFF にすると、共有頂点によるファン/ストリップを利用  できなくなるため、速度は確実に低下(向上ではありません)します。 -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 にするとかなり 描画速度が向上します。 -{ N | L | NN | NL | LN | LL のいずれかを指定 } テクスチャに使用するフィルタを指定します。 指定方法が異なるだけで、-fi[lter]オプションと内容は同じです。 -N … ポイントサンプリング(フィルタなし) -L … バイリニアフィルタ -NN … ポイントサンプリング & ミップマップ -NL … ポイントサンプリング & ミップマップ・リニア -LN … バイリニアフィルタ & ミップマップ -LL … バイリニアフィルタ & ミップマップ・リニア (トライリニアフィルタ:デフォルト) フィルタは、実行中いつでも自由に変更できます。 't' キーで、テクスチャのフィルタ(オプションの1文字目)の切り 替え(N:NEAREST / L:LINEAR)を行い、 'y' キーで、ミップマップフィルタ(オプションの2文字目)の変更 (なし / N:NEAREST / L:LINEARの3種類)を行います。 ※Windows95 のソフトウェア描画(Microsoft GDI Generic)では、NN および  LN フィルタ(ミップマップ・ポイントサンプリング)を指定すると不正終了  することがあるようです。 Windows98/NT では問題ありません。 -ani[sotropy] n 異方性フィルタ(Anisotropic Filtering)処理を行います。 通常のミップマッピングでは、テクスチャが長方形に引き伸ばされた 場合に、より縮小された方向のサイズに合ったミップマップを使用し ます。 このため、長い方向のテクスチャは、必要以上に縮小されたミップ マップを使用することになり、テクスチャの解像度が粗くなります。 正方形の形のまま縮小されない限り、長い方の辺の解像度までが、 短い方の解像度に合わせて低くなってしまう訳です。 例えば、縦横比8:1で縮小されたテクスチャは、長い方の辺が 本来の1/8の粗さでテクスチャマッピングされます。 結果、長い方の辺がぼやけた感じになったり、テクセルのジャギーが 目立つことになります。 異方性フィルタリングとは、これを防ぐための特殊なミップマップ フィルタです。 n には、異方性の最大値(縦横比の長い方の最大値)を指定します。 -ani 8 とすると、縦横比8:1までなら、適切な解像度で表現できるように なります。 ただし、システムがサポートする最大値には制限があるため、それより 大きい値は使用できません。 n に -1 を指定すると(-ani -1)、自動的にシステムがサポートする 最大値をセットします。 実行中 'u' キーで、いつでもフィルタの ON/OFF を切り替えられます。 -ani オプションを指定せずに 'u' キーで ON にした場合は、自動的に システムがサポートする異方性の最大値(可能な限り画質重視)に なります。 OpenGL のランタイム環境が、EXT_texture_filter_anisotropic 拡張 機能をサポートしている必要があります。 -FT[EST] テクスチャフィルタリングテストモード。 ミップマップのレベル毎に色を変化した特殊なテクスチャマッピング モードになります。 各フィルタがうまく処理されているかを確認できます。 例えば、ミップマッピングを適用している場合、テクスチャのサイズに よって、色が変化していなければなりません。 色が変化していない場合、ミップマップがサポートされていません。 また、トライリニア・フィルタを適用している場合は、色が段階的に ではなく、滑らかに変化していなければなりません。 色が段階的に変化している場合、ミップマップはサポートされて いますが、トライリニア・フィルタはサポートされていません。 -MT[EST] ミップマップフィルタリングテストモード。 1ピクセルの太さの十字の黒線が入った特殊なテクスチャマッピング モードになります。 ミップマップ処理時、どれだけ最適なレベルのミップマップが使われて いるかを確認できます。 なるべく細い線が、途切れたりせずにメッシュ状に描画されるのが 理想です。 たとえば、線が途中で途切れたり点線になっている場合は、最適な ミップマップよりもサイズの大きいテクスチャが選択されています。 また、テクスチャが長方形に縮小されている場所では、線が極端に 太くなっていることが解ると思います。 これはミップマップが、より縮小された方向のレベルによって選択 されるためです。 異方性フィルタリング(-ani[sotropy] オプション参照)がサポート されている環境でこのフィルタを使うと、線がより細く改善されます。 どの程度まで改善されるかは、システムのサポートに依存します。 -FT, -MT オプション指定時は、-r, -e, -C といった時計の素材指定オプション は指定しない方が、より変化が判りやすくなります。 -r, -e, -C を指定せずに -FT, -MT オプションで起動すると、マウス右ボタン ドラッグは距離や遠近感の変化ではなく、テクスチャの拡大縮小になります。 左右ドラッグ、上下ドラッグで、それぞれ S 方向、T 方向のテクスチャの スケールが独立して変化します。 glclock -FT や glclock -MT で実行し、'y' や 'u' キーでミップマップ フィルタ、異方性フィルタを切り替えながら、右ボタンドラッグし、テクスチャ スケールをさまざまに変化させてみてください。 -di[ther] n ディザ処理の ON/OFF を指定します。 0 を指定するとディザ処理を行ないません。 0 以外(デフォルト)でディザ処理を行ないます。 -fog n フォグモードを指定します。 0 : フォグなし 1 : 線形フォグ(デフォルト) 2 : 指数関数(距離) 3 : 指数関数2(距離の二乗) デフォルトは線形フォグですが、Savage2000 の実行モードでは 指数関数(距離)になります。 実行中 'q', 'w', 'e', 'r' キーで、それぞれフォグなし、線形フォグ、 指数関数、指数関数2にいつでも変更できます。 -pm[ode] s 描画プリミティブを指定します。 デフォルトではポリゴンによる描画を行ないます。 P : ポイント:点による描画を行ないます。 L : ライン :ワイヤフレームによる描画を行ないます。 F : フィル :ポリゴンによる描画を行います。 -tf[ormat] s テクスチャ内部フォーマットを具体的に指定(正確には希望)します。 sには、1テクセルを表現するための要素数もしくはフォーマットを 表すシンボルを指定します。 デフォルトRGB各8ビットフォーマット(GL_RGB8)です。 シンボルは、OpenGL API の glTexImage*D() コマンドに指定する コンポーネント数または内部フォーマットのシンボル定数と同じで、 以下のいずれかを指定できます。 1 2 3 4 GL_ALPHA GL_ALPHA4 GL_ALPHA8 GL_ALPHA12 GL_ALPHA16 GL_LUMINANCE GL_LUMINANCE4 GL_LUMINANCE8 GL_LUMINANCE12 GL_LUMINANCE16 GL_LUMINANCE_ALPHA GL_LUMINANCE4_ALPHA4 GL_LUMINANCE6_ALPHA2 GL_LUMINANCE8_ALPHA8 GL_LUMINANCE12_ALPHA4 GL_LUMINANCE12_ALPHA12 GL_LUMINANCE16_ALPHA16 GL_INTENSITY GL_INTENSITY4 GL_INTENSITY8 GL_INTENSITY12 GL_INTENSITY16 GL_RGB GL_R3_G3_B2 GL_RGB4 GL_RGB5 GL_RGB8 GL_RGB10 GL_RGB12 GL_RGB16 GL_RGBA GL_RGBA2 GL_RGBA4 GL_RGB5_A1 GL_RGBA8 GL_RGB10_A2 GL_RGBA12 GL_RGBA16 実行環境が GL_ARB_texture_compression extension をサポートしている場合は、加えて以下の圧縮フォーマットを指定可能 です(サポートしていない環境では最も近いフォーマットが自動的に 選択されます)。 GL_COMPRESSED_ALPHA GL_COMPRESSED_LUMINANCE GL_COMPRESSED_LUMINANCE_ALPHA GL_COMPRESSED_INTENSITY GL_COMPRESSED_RGB GL_COMPRESSED_RGBA これらは一般的な圧縮フォーマットで、具体的にどのような フォーマットが使用されるかは環境依存です(多分)。 GL_EXT_texture_compression_s3tc をサポートする環境では、 さらに以下に示す S3TC の具体的なフォーマットを指定できます。 GL_COMPRESSED_RGB_S3TC_DXT1 GL_COMPRESSED_RGBA_S3TC_DXT1 GL_COMPRESSED_RGBA_S3TC_DXT3 GL_COMPRESSED_RGBA_S3TC_DXT5 同じく GL_3DFX_texture_compression_FXT1 をサポートする環境では、 以下の FXT1 の具体的なフォーマットを指定できます。 GL_COMPRESSED_RGB_FXT1 GL_COMPRESSED_RGBA_FXT1 フォーマットシンボルは大文字でも小文字でも構いません。 接頭子 "GL_" の部分は省略できます。 また、ALPHA は A、LUMINANCE は L、INTENSITY は I、COMPRESSED は C だけで OK です。 例えば GL_LUMINANCE12_ALPHA4 は、L12_A4 でも OK です。 コンポーネント数指定の場合の1〜4の数値は、それぞれ、 1 は GL_LUMINANCE、2 は GL_LUMINANCE_ALPHA、3 は GL_RGB、 4 は GL_RGBA と指定することと同じです。 R, G, B はそれぞれ赤、緑、青を意味し、A および ALPHA はα値を、 INTENSITY, LUMINANCE は輝度情報を意味します。 シンボル中の R, G, B, A, INTENSITY, LUMINANCE などは、 各コンポーネントの構成内容を表します。 例えば RGB は、赤、緑、青の3コンポーネントで構成される フォーマットを使用するよう指示します。 コンポーネントを表す文字の後に数値が付いている場合は、さらにその コンポーネントを表現するためのビット深度も明示します。 例えば、R3_G3_B2 は、R, G, B の3コンポーネントで構成され、 それぞれ赤3ビット、緑3ビット、青2ビットのフォーマット (合計8ビット)を意味します。 RGBA16 は、赤、緑、青、αがそれぞれ16ビット(計64ビット) のフォーマットを意味します。 ビット深度の指定は、必ずしも指定した通りにはなりません。 ランタイムの OpenGL が指定されたフォーマットをサポートしていない 場合は、使用可能なもっとも近いフォーマットが自動的に選択されます。 また、OpenGL のランタイムバージョンが 1.0 の場合は、ビット深度 情報は一切無視されます。 例えば、RGB 系のフォーマット(R3_G3_B2, RGB5 etc.)は すべて RGB(コンポーネント数3) に、 RGBA 系のフォーマットはすべて RGBA(コンポーネント数4) になります。 デフォルトは GL_RGB8 ですが、これは、glclock のテクスチャ画像 (.ppm ファイル)が RGB8 の24ビットフルカラーフォーマットに なっているためです。 ※OpenGL-1.0 やベンチマークモードでのデフォルトは RGB になります。 glclock-6.0 Beta 以前のデフォルトは RGB(つまりビット深度の 指定はなし)だったため、ディスプレイが16ビットモードの場合に、 テクスチャも16ビットが選択され、画質が劣化することがありました。 glclock-6.0 Beta 2.9 以降では明示的に24ビットを指定している ため、環境によっては見た目が改善されています。 ※ランタイムが RGB8 をサポートしている必要があります。 テクスチャメモリが少ない(2MB未満?)環境では、 -r, -e オプション指定時にテクスチャメモリが足らなくなり、 実行不能もしくは速度が低下する可能性があります。 テクスチャメモリの少ない環境で、metalclock や marbleclock の 速度が不自然に低下する場合は、 -tf RGB4 や -tf R3_G3_B2 のように、テクスチャのビット深度を明示的に低くしてみてください。 速度が改善される可能性があります(画質は犠牲になります)。 テクスチャ画像が元々RGBの3コンポーネントであるため、 例えば RGBA 系のα値付きフォーマットを指定しても、見た目に 変化はありません。 が、テクスチャメモリ配列の都合上、RGB より RGBA を指定する方が 速度が速くなる場合があります。 INTENSITY, LUMINANCE 系のフォーマットを指定すると、テクスチャが 輝度情報のみを持つため、元画像の色に関係無く、グレイスケールの テクスチャを使用することになります。 また、ALPHA 系では、有効な色情報を持たず、また、glclock の テクスチャ画像が元々α値を持たないため、テクスチャが貼られて いないのと同じ結果になります。 -TC 一般的な圧縮テクスチャフォーマットを使用(希望)します。 -tf GL_COMPRESSED_RGB のショートカットです。 実行環境が OpenGL-1.1 以降および GL_ARB_texture_compression をサポートしている必要があります。 サポートされていない環境では、使用可能なもっとも近いフォーマット が選択されます。 -S3TC S3TC 圧縮テクスチャフォーマットを使用(希望)します。 -tf GL_COMPRESSED_RGB_S3TC_DXT1 のショートカットです。 実行環境が OpenGL-1.1 以降かつ GL_ARB_texture_compression と GL_EXT_texture_compression_s3tc をサポートしている必要があります。 サポートされていない環境では、使用可能なもっとも近いフォーマット が選択されます。 -FXT1 3Dfx の FXT1 圧縮テクスチャフォーマットを使用(希望)します。 -tf GL_COMPRESSED_RGB_FXT1 のショートカットです。 実行環境が OpenGL-1.1 以降かつ GL_ARB_texture_compression と GL_3DFX_texture_compression_FXT1 をサポートしている必要があります。 サポートされていない環境では、使用可能なもっとも近いフォーマット が選択されます。 -p[ers] s OpenGL に、パースペクティブコレクションのヒントを設定します。 F : GL_FASTEST : 最も効率の良いオプションを選択。 N : GL_NICEST : 最も正確、または最高品質のオプションを選択。 それ以外 : GL_DONT_CARE : 選択なし(デフォルト)。 ※OpenGL の動作環境によって解釈のされ方は異なるため、必ずしも 設定した通りにはなりません。 -ss[cale] d ソリッドテクスチャ実行時(-s または -r オプション)の テクスチャの S 座標方向のスケールを変更します。 デフォルトは 32.0 です。 -ts[cale] d ソリッドテクスチャ実行時(-s または -r オプション)の テクスチャの T 座標方向のスケールを変更します。 デフォルトは 32.0 です。 -t[exscale] d ソリッドテクスチャ実行時(-s または -r オプション)の テクスチャの S,T 両方に同じ値を指定します。 -dt[exscale] d ディティールテクスチャ使用時(-D オプション参照)のテクスチャの スケールを指定します(S, T 座標両方)。 デフォルトは 6.0 です。 -i[size] n 意味が解らない方は、このオプションは使わないでください。 テクスチャとして設定する前にイメージをフィルタ処理しながら 縦横それぞれ 2 の n乗 サイズにスケーリングします。 ただし、負の数を指定すると、無条件にシステムがサポートする テクスチャの最大サイズまで拡大します。 0(デフォルト)は、元の画像ファイルの大きさのまま利用します。 -i 8 と指定すると、256 x 256 にスケーリングします。 ハードウェアでのフィルタリングを実装していない環境では、 -fi N または -N オプションを指定すると、つまりフィルタリングを なくすと、大幅に速度が向上します。 しかし、テクスチャの画像サイズがあまり大きくない場合は、 サンプリング不足によるジャギーが目立ちます。 そこで、あらかじめフィルタ処理を施しながらテクスチャのイメージを 拡大しておきます。 これにより、擬似的にバイリニアフィルタリングを施したような効果が 得られます。 それがこのオプションの目的です。 ソフトウェア描画の環境でテクスチャマッピングを行う場合は、 -N -i -1 と指定して起動すると、劣化も比較的少なく、ずいぶん速くなります。 ※当然ながらサイズに比例してメモリを使います。  また、最初にスケーリングする分、起動にかなり時間がかかります。 ※テクスチャにバイリニアフィルタを施している場合(-fi L or LN  or LL オプション指定時)にはまったく効果はありません。 ※ハードウェアアクセラレーション対応の環境や、オプションの意味の  解らない方は、このオプションは使用しないでください  ● ライティング関連オプション   OpenGL API のライティング(光源処理:シェーディング)に関するオプションです。   ライティングを行わないモード(-s 1, -e 1, -C, -r 1 など)では無効です。 -l[ight] n 光源の数を n 個にします。 n には 0〜8 までを指定できます。 デフォルトは 5 です。 光源数は、実行中 '1'〜'8' キーでいつでも変更できます。 ※光源の数は、5個程度が、速度、画質面でもっともお勧めです。 -lt[ype] n 光源の種類を指定します。 n には 0〜2 までを指定できます。 0 : デフォルト、平行光源(減衰なし) 1 : 点光源(距離の2乗に反比例して減衰) 2 : スポット光源(点光源に加え、ライトの方向によっても減衰) 当然ながら、n が大きくなる(つまり計算が複雑になる)ほど、 処理は遅くなります。 実行中 'i', 'o', 'p' キーで、それぞれ平行光源、点光源、スポット 光源にいつでも変更できます。 ※光源の減衰は環境マップでは表現できないため、環境マッピングを  使用しているモード(-e, -C, -r)では、マウス右ドラッグすると  整合性が取れなくなり、見た目がおかしくなります。 -ls[aturation] d 光源の彩度(色の鮮やかさ)を指定します。 1.0 がデフォルトで、絶対値を大きくするほど鮮やかになり、 0.0 でモノクロライトになります。 マイナス値を指定すると、補色(正反対の色)になります。 実行中、'h', 'j' キーで、いつでも調整できます。 'h' キーを押す毎に彩度が下がり(デフォルトから5回押すと モノライト)、'j' キーを押す毎に彩度が上がります。 彩度を下げ続けた結果モノクロを超えると、補色となり逆にで彩度が 上がってゆきます。 'H', 'I'(SHIFT キーを押しながら)で、デフォルトの彩度に戻ります。 ※環境マッピングを使用しているモードでは、実行中に変化させると、  環境マップが彩度の変化に対応できないため、整合性が取れず、  見た目がおかしくなります。 -l[rotate] n 光源の回転動作の ON/OFF を指定します。 n には -1, 0, 1 のいずれかを指定します。 -1 : デフォルト。環境マッピングを行わないモード(光源が動的に 変化しても矛盾が生じないモード)のみ光源を動かします。 0 : 光源は動きません。 1 : 光源は必ず動きます。 実行中 'k' キーで、いつでも回転動作を ON/OFF できます。 環境マッピングを使用しているモードでは、光源が動くと環境マップ との整合性が取れなくなるため、見た目がおかしくなります。 -sp[ecular] d 全体的なスペキュラー(ハイライト)の強さを指定します。 デフォルトは 1.0 です。 ※環境マッピングを使用するモード(-r や -e、-C など)と併用 しても正常に働きません。 -LO[CAL] OpenGL の GL_LIGHT_MODEL_LOCAL_VIEWER を有効にします。 これを指定すると、シェーディングの際に視線ベクトルを頂点単位で 正確に計算します。 指定しない場合は (0, 0, -1) 固定となります。 描画速度は低下しますが、写実性は多少向上します。 実行中 'l' キーで、いつでも ON/OFF を切り替えられます。 ※glclock では、意図的に面の法線ベクトルをずらすなどして、  このオプションを指定しない場合の画質の劣化を軽減しています。  そのため、このオプションによる劇的な変化はありません。 -LIGHT[TWOSIDE] OpenGL の GL_LIGHT_MODEL_TWO_SIDE を有効にします。 これを指定すると、ライティング計算を必ず両面(ポリゴンの裏表) について行います。 通常このオプションを指定しても、速度が遅くなる可能性があるだけで、 まったく意味を持ちません。 3Dfx OpenGL Beta 2.1 で、これを有効にしておいた方が速度が上がる という意味不明の現象を確認したため、念のため明示的に指定できる ようオプションにしました。 3Dfx OpenGL Beta 2.1 の環境では自動的に指定されます。  ● ベンチマーク関連オプション -F[PS] FPS (Frames / Sec), kTPS (kilo-Triangles / Sec)等を出力します。 1秒または60フレーム毎に FPS(フレーム/秒)を計算し、 FPS を画面左上に表示します。 さらに、FPS、kTPS(1000 トライアングル/秒)と、1フレーム中に 処理しているトライアングル数 kTPF(1000 トライアングル/フレーム)を標準出力に出力します。 実行中に 'f' キーを押すと、いつでも出力を ON/OFF できます。 ※Windows 版では標準出力は破棄されるため、デフォルトで  glclock.log というログファイルに出力されます。 -sl[eep] n CPU 負荷コントロールオプション。 1フレーム描画する度に、nミリ秒実行をスリープします。 デフォルトは 0(一切スリープしない)です。 スリープしている間は CPU を使いませんので、常駐させておきたい 場合など、負荷を軽減するために使用します。  ● 時計メッシュの詳細設定オプション   これらのオプションは、-q オプションよりも詳細に時計メッシュの細かさを指定   するものです。   -q オプションは内部的に以下のオプションを組み合わせています。 -hed[ron] n 0 : 5分単位の位置で回転する多面体を正八面体にします。 0 以外 : デフォルト。正二十面体にします。 -d[ivide] n 時計本体の形を n角形にします。 n には 3 以上の数値を指定できます。 デフォルトは 32 です。 -g[lass] n 時計表面のガラス張りの表現方法を指定します。 n には 0〜3 を指定します。 0 : ガラスの描画を一切行ないません。 1 : ハイライトのかけら(?)を回転させます。 デフォルトですが、環境マップ使用時は 2 に変更されます。 2 : ガラス表面の反射を表現します。 3 : 湾曲したガラスの反射を表現します。 -bi[t] n 時計の針が刻む文字盤上の秒単位の粒々(?)の描画の ON/OFF。 0 を指定すると描画しません。 0 以外にすると描画します(デフォルト)。 -me[sh] n 時計の緯度方向の描き込みの細かさを 2 種類から選択します。 0 で単純なモデルを使用します。 0 以外(デフォルト)で複雑なモデルを使用します。 -go[ld] n 時計の周囲に付いている金色の飾りの細かさを指定します。 金飾りは三角錘(四面体)を n 回分割して描画しています。 1回の処理で、構成する三角形を4枚に分割するため、 1つの飾りで 4 の n+1 乗枚のポリゴンを描画することになります。 デフォルトは 2 です(1つの飾りで 4^(2+1) = 64 ポリゴン)。 n に -1 を指定すると、金飾りを描画しません。 また、5 以上の指定はやめた方が良いでしょう(^^;;  ● その他のマイナーなオプション -ST[OP] 時計は動きません(意味なし)(^^;; -ms[peed] d マウスドラッグの感度を指定します。 デフォルトは 160.0 です。 -NO[LID] 時計の蓋の描画をなくします。でも開閉(?)はできます。 -bg[color] n 背景色、光源色、時間によるグラデーションの仕方を指定します。 0 : デフォルト。背景色と光源の色が時間によってグラデーション。 1 : 背景色は常に夕(朝)焼色(橙色)。光源色は真昼。 2 : 背景色は常に夜(暗い青色)。光源色は真昼。 3 : 背景色は常に昼(空色)。光源色は真昼。 4 : 背景色は黒。光源色は真昼。 ※ 0 以外では、光源の色は昼間の色で固定(グラデーションなし) になります。 ■■ 拡張機能(OpenGL Extensions)のサポートについて ■■ glclock は、OpenGL 拡張機能(OpenGL Extensions)に対応しています。 使用可能な環境では画質や速度がより向上します。 基本的に自動的に使用されますので、ユーザが特に意識する必要はありません。 興味のある方は、以下をお読みください。 OpenGL コマンドの追加がなく、パラメタの追加のみの拡張機能は、 ランタイム OpenGL のサポートのみで使用可能です。 コマンドの追加のある拡張機能は、コンパイル時およびランタイム双方の OpenGL が、該当する拡張機能をサポートしている必要があります。 ※Windows 版は、いずれもランタイム OpenGL のサポートのみで使用可能です。 現在対応している拡張機能は以下の通りです。  ● マルチテクスチャ   ・GL_ARB_multitexture   ・GL_EXT_multitexture   ・GL_SGIS_multitexture   -r 2 オプション時に使用。   テクスチャおよびライトマップのブレンドなど、本来2パス以上必要な   テクスチャブレンディングを1パスで処理することができます。   そのためより高速に描画できます。   コンパイル時、ランタイムの双方で、OpenGL-1.1 以降および   上のいずれかの拡張機能をサポートしている必要があります。   ※Windows 版は、ランタイムのサポートのみで使用可能  ● セパレート・スペキュラー・カラー   ・GL_ARB_separate_specular_color   ・GL_EXT_separate_specular_color   -s 3 オプション時に使用。   テクスチャマッピング時のスペキュラー(光沢、ハイライト)を、   テクスチャブレンディングの後に加算し、綺麗なスペキュラーを   描画します。   この機能がサポートされていない環境では、2パスでスペキュラーを   加算する必要があるため、速度が大幅に低下します。   OpenGL-1.2 以降では正式にサポートされています。   ランタイムのサポートのみで使用可能です。  ● テクスチャ・オブジェクト   ・GL_EXT_texture_object   -e, -C, -r オプション時に使用。   複数のテクスチャを高速に切り替えて使用できます。   glclock では、この機能を使えない場合、1枚のテクスチャをに分割し、   強引に複数のテクスチャとして使用するため、画質が劣化します。   OpenGL-1.1 以降では正式にサポートされています。   コンパイル時、ランタイム双方のサポートが必要です。   ※Windows 版は、ランタイムのサポートのみで使用可能  ● ポリゴン・オフセット   ・GL_EXT_polygon_offset   -s 3, -r, -D オプションと同時に、-zoffset を指定された時に使用。   2パス以降のレンダリング時に、Zバッファに使う値にオフセットを与えます。   特定の環境で描画がおかしくなるのを防ぐために使うだけですので、   通常の実行にはほとんど関係ありません。   OpenGL-1.1 以降では正式にサポートされています。   コンパイル時、ランタイム双方のサポートが必要です。   ※Windows 版は、ランタイムのサポートのみで使用可能  ● ノーマル(法線)・マッピング(テクスチャ座標自動生成の一種)   ・GL_EXT_texture_cube_map   ・GL_NV_texgen_reflection   -e, -C, -r (環境マッピング使用)と同時に、-FAKE を指定された時に使用。   環境マッピングの反射ベクトル計算の代わりに、   法線ベクトルをそのまま環境マップのテクスチャ座標として使用します。   平行投影の時のみ正しい結果となりますが、   反射ベクトルの計算等が不用になるため、環境マッピングが多少高速になります。   glclock では、座標生成アルゴリズムを利用するだけです。   GL_EXT_texture_cube_map を利用する場合も、キューブ環境マッピングを行う訳では   ありません(座標生成アルゴリズムを利用するだけ)。   ランタイムのサポートのみで使用可能です。  ● アンアイソトロピック(異方性)・フィルタリング   ・GL_EXT_texture_filter_anisotropic   -e, -s, -C, -r (テクスチャ使用)時、-ani[sotropy] を指定された時に使用。   テクスチャ・フィルタリングの一種。   通常のミップマッピングでは、テクスチャが長方形に引き伸ばされた場合に、   より縮小された方向のサイズに合ったミップマップを使用します。   このため、長い方向のテクスチャは、必要以上に縮小されたミップマップを   使用することになり、テクスチャの解像度が粗くなります。   結果、遠くのテクスチャが極端にぼやけたり、ジャギーが目立ったりします。   異方性フィルタはこれを防ぐ特殊なミップマップです。   詳細は -ani[sotropy] オプションを参照してください。   ランタイムのサポートのみで使用可能です。  ● 圧縮テクスチャフォーマット   ・GL_ARB_texture_compression   ・GL_EXT_texture_compression_s3tc   ・GL_3DFX_texture_compression_FXT1   -e, -s, -C, -r (テクスチャ使用)時、-tf[ormat] を指定された時に使用。   S3TC, FXT1 といった圧縮テクスチャフォーマット。   GL_ARB_texture_compression をサポートしている実行環境では、   -tf に与えるフォーマットシンボルとして、   GL_COMPRESSED_ALPHA GL_COMPRESSED_LUMINANCE GL_COMPRESSED_LUMINANCE_ALPHA   GL_COMPRESSED_INTENSITY GL_COMPRESSED_RGB GL_COMPRESSED_RGBA   の圧縮フォーマットが使用可能になります。   具体的にどのような圧縮形式が使用されるかは環境に依存します(多分)。   GL_EXT_texture_compression_s3tc, GL_3DFX_texture_compression_FXT1 を   サポートしている環境では、S3TC, FXT1 の具体的な圧縮方法を明示的に指定   できます。   サポートしない環境では、使用可能な最も近いフォーマットが自動的に選択されます。   GL_EXT_texture_compression_s3tc をサポートする環境では、上のシンボルに加えて   GL_COMPRESSED_RGB_S3TC_DXT1 GL_COMPRESSED_RGBA_S3TC_DXT1   GL_COMPRESSED_RGBA_S3TC_DXT3 GL_COMPRESSED_RGBA_S3TC_DXT5   が、   GL_3DFX_texture_compression_FXT1 をサポートする環境では   GL_COMPRESSED_RGB_FXT1 GL_COMPRESSED_RGBA_FXT1   がそれぞれ使用可能になります。   現時点では、GL_S3_s3tc extension には対応していません。   GL_3DFX_texture_compression_FXT1 については動作未確認です。   プリ圧縮テクスチャ画像フォーマット(.dds ファイル)は未対応です。   ランタイムのサポートのみで使用可能です。