※ OpenGL ※             目次


 10/04/04

概  要
 OpenGLとは3D描画用の記述言語(3DAPI)であり、CG業界の標準言語と言っても良い。Windows環境においては標準となるDirect 3D(DirectXに含まれる)と共に使われている。PCゲーム業界全体で見れば採用率は低く、更に近年ではどんどん対応ゲームが減り続けている状況なのだが、3DFPSにおいては歴代のQuakeエンジンがこのAPIを採用しているので、D3DではなくてOpenGLの方が動作には必須というゲームが多い。つまり1996〜2005年辺りのゲームをプレイしようとすると、対応を要求されるFPSが多くなる。

 問題になっているのは、上記の様に現在ではD3DがAPIとしての使用率が高いので、ビデオカードのドライバの方もDirectXへの対応が優先されているという点。単体売りのビデオカードにおいては最新のOpenGLへの対応もちゃんと成されているが、オンボード搭載の安価なビデオチップなどは、OpenGL用のドライバへの対応が疎かになっている物も存在している。その為にマシンパワーとしては十分なのに、OpenGLにビデオのドライバが未対応なので、そのゲームが動かせないというケースが出て来る事になる。残念ながら数世代前のビデオチップをオンボードで搭載した低価格のメーカー製PCでは、OpenGLへの対応は遅れているというのが現実である。

OpenGL対応度の検査
 OpenGL Extensions Viewerというフリーのツールが存在しており、自分のビデオカードの対応度を調べる事が出来る。簡単なテストを実施する事で、歴代のバージョン毎にテストがパスしたか(対応しているか)を表示してくれる。

 基本的には最新バージョンを使用するが、起動時にエラーが発生するようならば旧バージョンを検索して使用してみる。起動後のOpenGLテストでエラーになったりするケースでは、画面解像度を下げると上手く行く事もある。この場合には実際にプレイするゲームの解像度の方も下げないとならないかもしれない。

 動作にはMicrosoft .NET Framework Version 2.0がインストールされている必要がある。Windows Updateからもインストール可能。既に入っているのかはコントロールパネル→プログラムの追加と削除の一覧から見られる。


 起動後にReportをクリックすると、OpenGLのバージョンに応じたテスト結果が表示される。そのゲームがどのバージョンのOpenGLを使用しているのかは分かりにくいのだが、参考までにリリース時期を書いておく。OpenGL 1.1(1997), 1.2(1998), 1.3(2001), 1.4(2002), 1.5(2003), 2.0(2004), 2.1(2006), 3.0(2008), 3.1(2009), 4.0(2010)等。


 なおテスト結果が100%パスしていないと、そのバージョンを使用しているゲームは絶対に動作しないという意味ではなく、実際には起動はするが画面表示の一部(パスしていない機能を使用した描画)が変になるだけという事も多い。もしそのゲームがExtensionsをオフに出来る設定を持っているなら(Soldier of Fortune等)それをオフにする。或いはグラフィックス系のオプションを下げたりオフにしたりして画質レベルを下げる事で解決するケースもある。

GLW_StartOpenGL() - Could Not Load OpenGL Subsystem
 最も頻繁に出るエラー。これはそのゲームの要求するOpenGLの環境が初期化(イニシャライズ)出来なかったという意味のエラーである。要するに必要とされるレベル(バージョン)のOpenGLに対応していないから起動しないの意味。確認すべきは以下の項目。


*ビデオカードのドライバを最新の物に更新する
 当然の事ながら最重要事項である。対応しているビデオカードを使用しているならば、ドライバを更新すれば治る可能性が高い。

 ただしOpenGL対応のゲームでは、明確に「OpenGLのV1.5以上に100%対応したビデオカード要」といった具合にバージョンを示す事はあまり無く、またビデオカード側がリリースしているドライバでも、どこまでに対応しているのかを明記していない事もある。Quakeエンジン系のゲームにおいては、OpenGLの必要バージョンの代わりに、具体的にテストをパスしたビデオカードの名称を表示する(併せてドライバのバージョンを掲載する場合もあり)事が多い。つまりそこに掲載されていない場合には動作保証はしないという意味になる。中には動かないビデオカード(チップ)の方も記載してくれているケースも有る。ただしメーカー製PCの様なオンボードのビデオ機能、或いはノート型PCについては一律にサポート外としているケースが多い

 特にプレイしたいゲームの3〜5年前以上に発売されたオンボードのビデオ機能だと動かせる確率は低くなる。Win98時代には自動的にOpenGL用のドライバをインストールしてくれるGLSetupというプログラム(サイト)が存在していたのだが、XPの登場と共に消えてしまった。取りあえず動くのかどうか分からないという方には、デモによる動作テストをしてから購入するというのが最も有効な判断基準である


*ゲームの要求する最低環境を満たしているか(VRAMの必要量等)
 VRAMはDirectX診断(ファイル名を指定して実行にてdxdiag)のビデオカードのタブにて確認可能。上記のOpenGL Extensions Viewer等の各種ツールでも確認出来るし、PCのカタログの仕様の欄を見てもいい。


*ビデオカードのアクセラレーションが最大になっているか

 XPの場合だと、コントロールパネル>画面>設定タブ>詳細設定>トラブルシューティングのタブの中に6段階のスライド式のバーが存在している


*ビデオカードを増設している場合、オンボードのビデオ機能(デフォルト)が確実にOFFになっているかどうか(BIOS)
 これはかなり昔のチップセットを使っているマザーボードが対象。現在では自動的にOFFになる物が多いが要確認。


*デスクトップカラーは32bitか
 近年のゲームは32bitに最適化されているか、それでないと動かない物も多くなって来ている。あとは逆に現在のデスクトップが32bit設定であれば、16bitへと切り替えてみるというのを試す。


*Safe Mode
 セーフモードがスタートメニューに登録されたゲームのフォルダ内に用意されている場合は、それで起動してみて変化を確認。


*DrawDib
 「ファイル名を指定して実行」にて、win.iniと入れてやると該当ファイルがメモ帳で開く。ここの[DrawDib]の中にDVA=0の記述が存在する場合には、この行のみを削除する。


*マルチモニタの問題
 最近では使う人も増えて来ているマルチモニタ(dual-display)だが、実はこれはOpenGLとは相性が悪い。OpenGL系のゲームを動作させる際に、2nd用のモニタを機能停止させておかないとトラブルになるケースがある。自分はモニタは1台しか使っていないという人でも、稀に2台使用状態になっていたりするので注意が必要である。

 その他2台のモニターを「別々のビデオカードでコントロール」、「両方のビデオカードがOpenGLに対応している」という環境だと、起動しなかったりパフォーマンスが落ちたりというトラブルが発生する可能性もある。

その他

*古いゲームにてOpenGLを選択しても正常に動作しない
 2000年頃までの昔のゲームでは3DAPIの選択に3dfx mini GLの選択が出る物が有るが、これは3dfx社のVoodoo 1,2カード用のモードなので選ばない事。通常の(Default) OpenGLを選択しないとならない。

 Quake 1のエンジンを使用しているゲームの場合、GLQuake等を入れるとデフォルトで3dfxのカードを選択してしまうので、インストールを行ったフォルダに有るopengl32.dllを削除(移動)しておかないとならない。なおQuakeに関して詳しくはTopページからレビューを参照してもらいたい。


*Quakeエンジン使用のゲームにて、輝度を最大にしても暗い

 ビデオカードとドライバによる相性問題として、これらのエンジンをベースとしたゲームが異様に暗いという問題が起きるケースが有る。これにはゲーム中にShift+半角/全角キーにてコンソールを表示してやり、そこから内部のパラメータ設定を変更してやるという手法がある。なおconfigファイルの中身を直接編集しても同じ事。

 ただしこれを行うと、明るくはなるが白飛び状態になったりとか、ライティングのエフェクトが正常に行われなくなったりもするので注意。バランスを考えるならば、面倒でもCRT側の明るさをその都度調整してやる方が良い。ビデオカードのドライバにて明るさの設定を何種類も持って切り替えられる物が有るが、これが表示にちゃんと反映されるかはそのゲームによる。

 Quakeではgammaの値(デフォルトは1.0)を増やして行く。或いはr_fullbrightを1に設定する。その後restartコマンドにて変更を有効にする。

 Quake 2ではintensity(デフォルトは2.0)、gl_modulate(1.0)を上げて、vid_restartにて再読み込みさせると有効になる。或いはr_fullbrightを1に設定してみるという手もある。

 Quake 3ではr_intensity(1.0)とr_gamma (1.0)を上げてからvid_restart。効果が無いならばr_ignorehwgamma 1を入力後にvid_restart。それでもダメならばr_ignorehwgamma 0r_overbrightbits 0を入力してからvid_restart。またはr_mapoverbrightbits x(xは2-3の間)にしてvid_restart。

 なおゲームによっては同系統のエンジンでも別のパラメータを使っていたりする場合もあるので、効果が感じられない場合には個別に調べるしかないだろう。

      目次