OpenGLを扱うプログラムがThinkPad X61で動かない
OpenGLを扱うプログラムを書いて,ThinkPad X61(GPU:GMA X3100,OS:Windows7 64bit)で実行してみたところ,何度やっても3Dのキャンバス部分が描画されない*1。ところが,プログラム記述に間違いはない……ということでここ数日悩んでいて,ドライバの問題だと気付いたのが一昨日の話。で,マニュアル通りにIntel 965 ExpressチップセットのVGAドライバ(最新版)を入れても直らず,Windows標準のドライバ(名前に「WDDM 1.1」って付いている奴)に戻したら動いた!というのが昨日の話。ただこれだと,OpenGL 1.1までのAPIしか使えない*2ので,なんだかなあということで試行錯誤してみた。
最終的には,Intel 4シリーズのVGAドライバに少し手を入れてインストールしたら上手く行った。手順を以下に詳しく記す。
注意
違うVGAのドライバをインストールすることになる上,ドライバの設定ファイルを書き換える必要があるので,当然ながら自己責任で試してね。
Intelから最新のドライバをDLする
IntelのサイトからIntel 4シリーズの最新VGAドライバをDLする*3。今回DLしたドライバのバージョンは15.17.18.64.2555で,ファイル名はWin7Vista_64_151718.zip。ファイル名からも分かる通り,Windows Vista及びWindows 7の64bit版に対応したドライバになっている。
ドライバに含まれるinfファイルを編集する
DLしたドライバのアーカイブを展開し,Graphicsディレクトリの中にあるigdlh64infというファイルを編集する。このファイルはplain textなので,適当なテキストエディタで編集できる。編集するのは55行目付近のDriver informationのセクション。
[IntelGfx.NTamd64.6.0] %iCNTG0% = iCNT0, PCI\VEN_8086&DEV_2A42 %iCNTG1% = iCNT1, PCI\VEN_8086&DEV_2A43 %iEGLG0% = iEGL0, PCI\VEN_8086&DEV_2E02 %iEGLG1% = iEGL1, PCI\VEN_8086&DEV_2E03
上記のような箇所があるので,これを下記のように書き換えて保存する。
[IntelGfx.NTamd64.6.0] %iCNTG0% = iCNT0, PCI\VEN_8086&DEV_2A02 %iCNTG1% = iCNT1, PCI\VEN_8086&DEV_2A03 %iEGLG0% = iEGL0, PCI\VEN_8086&DEV_2A12 %iEGLG1% = iEGL1, PCI\VEN_8086&DEV_2A13
デバイスマネージャからドライバをインストールする
デバイスマネージャを開き,ディスプレイアダプターの項目を右クリックして「ドライバソフトウェアの更新」を選ぶ。コンピュータを参照→一覧から選択→ディスク使用と進んで,先ほど編集したinfファイルを選ぶ。「互換性のあるハードウェアを表示」のチェックを外して,「Mobile Intel 4 Series Express Chipset Family」を選ぶ。
インストールを進めると何回か怖い色*4で警告されるが,いずれも無視して先に進む。ファイルの編集に失敗していないければ,問題なくインストールが終了するはず。
インストール終了後に再起動すると(成功していれば)OpenGLを扱うプログラムが動作するようになっているはず。試しに,GL_VERSION*5を文字列として出力するプログラムを書いて実行してみると,「2.1.0 - Build 8.15.10.2555」という出力を得た。めでたしめでたし。
結論
新しいマシンを導入した方が早い。
追記(2012-02-24T10:00)
紹介した構成だとWindows Media Playerとドライバ付属の設定画面がうまく動かない様子……