FrontPage > 翻訳作業場 > FlightGearマニュアル / 第IV部 / 付録C
The FlightGear Manual Version 0.9
このドキュメントは http://www.flightgear.org/Docs/getstart/getstartap3.html の日本語訳です。
付録C
OpenGL グラフィックス ドライバについて †
FlightGear のグラフィックス エンジンは OpenGL と呼ばれるグラフィックス ライブラリに基づいています。
その第一の利点はプラットフォームに依存しないことです。
すなわち、 OpenGL をサポートするように書かれたプログラムは、事前に適切なドライバをインストールさえしていれば、さまざまなプラットフォーム上でコンパイルし実行することが可能です。
従って、単にバイナリを実行したいのか、あるいはご自身でプログラムをコンパイルしたいのかに関わらず、お手持ちのビデオカード用の何らかの OpenGL サポートをインストールしなくてはなりません。
OpenGL ドライバについての良いレビューが以下にあります。
訳)動作環境 (日本語)
http://www.flightgear.org/hardwarereq.html (英語、リンク先修正)
Windows 向けの具体的な情報は
http://www.x-plane.com/SYSREQ/v5ibm.html (リンク切れ)
にあり、Macintoshi 向けは以下にあります。
http://www.x-plane.com/SYSREQ/v5mac.html (リンク切れ)
Linux Quake HOWTO は Linux と 3D アクセラレータについての文章を探すのにうってつけの場所です。
http://webpages.onvoy.com/bobz/howto/ (英語、リンク先修正)
訳注: 上記は1998年に書かれた古い文章です。Quake についての (全く別の) 新しい文書は http://www.tldp.org/HOWTO/Quake-HOWTO.html にあります。toshi
これは、Linux の 3D 設定がうまく行かないときに最初の手助けとなるはずです。
残念ながら、世の中には非常に多くのグラフィックス ボードやチップ、ドライバが存在するため、全てのシステムに対して完璧に記述することはできません。
NVIDIA が現在の市場を席巻しており、そのチップが実際に FlightGear を実行するだけのパワーがあることを証明している事実を考慮し、次に NVIDIA のドライバに焦点を絞って説明します。
訳注: Gentoo Linux や X.Org 環境のユーザには次の文書が役に立つかもしれません。toshi
Gentoo Linux Documentation
C.1 Linux における NVIDIA チップベースのカード †
最近の Linux のディストリビューションは、OpenGL プログラムを Linux で走らせるために必要なもの全てを含んでおりインストールもしてくれます。
通常は、追加のインストールが必要なものは何もありません。
もし何らかの理由でそれが動作しないときは、 NVIDIA のサイトから最新のドライバをダウンロードすると良いでしょう。
http://www.nvidia.com/object/unix.html (リンク先修正)
現時点においてこのページには、次の Linux ディストリビューション向けの NVIDIA 全チップ用のドライバが数種類のフォーマット (.rpm, tar.gz) で置かれています。
RedHat 7.1, Redhat 7.0, Redhat 6.2, Redhat 6.1, Mandrake 7.1, Mandrake 7.2, SuSE 7.1, SuSE 7.0。
これらのドライバは OpenGL をネイティブにサポートしており、追加で必要なのものは一切ありません。
上述のページには、ステップバイステップで詳細に記述された README and Installation Guide が含まれており、その資料をここにコピーすることはしません。
OpenGL に関連するあらゆるライブラリを NVIDIA ドライバに付属するものに必ず置き換えるようにしてください。
ユーザ空間のライブラリだけでなく、 X サーバ拡張モジュール (X server extension modules) ディレクトリ内のライブラリも同様です。
C.2 Windows における NVIDIA チップベースのカード †
この場合もやはり、まずお使いのグラフィックスカードに付属するドライバを試みて下さい。
大抵のドライバには OpenGL サポートが含まれています。
もし何らかの理由でお使いのボードのメーカがこの機能をドライバに含めていなければ、NVIDIA が作成しているリファレンスドライバ Detonator をインストールした方が良いでしょう (どっちにしろいい考えかもしれません)。
以下から3種類のバージョン (Windows 95/98/ME, Windows 2000, Windows NT) を入手できます。
http://www.nvidia.com/products.nsf/htmlmedia/detonator3.html
訳注: 上記の記述は少し古いようです。http://www.nvidia.co.jp/page/drivers.html にアクセスし、ご使用になっている製品を選択する方法をお勧めします。toshi
このページにあるリリースノートをとにかく良く読みましょう。
特に、新しい NVIDIA ドライバにまず切り替える前に、現在使っているドライバをアンインストールすることと、標準的な VGA グラフィックスアダプタを接続することをお忘れなく。
C.3 Windows における 3DFX チップベースのカード †
もはや 3DFX からは Glide ドライバが提供されていないので、このカードを動作させるチャンスはほとんど無いようです (どこかの net や 個人的なつながりでもっと古い OpenGL ドライバを見つけた場合を除きます)。
公式サポートや 3DFX の説明を以前に提供していた全てのページは消失しています。
けれども、代替の方法として次の節をチェックすると良いでしょう。
C.4 Windows ユーザのための代替手段 †
ボード上のグラフィックスチップを検出し、適切な OpenGL ドライバを自動インストールするプログラムを作る試みが現在行われています。
これは OpenGL Setup と呼ばれ、現時点ではベータ段階です。
ホームページは以下にあります。
http://www.glsetup.com/ (オリジナルサイト消滅)
私たちはこれを試していませんが、他の手段がない方にはお勧めしておきます。
C.5 Linux における 3DFX チップベースのカード †
注意点として、現在は 3DFX が NVIDIA に吸収合併されたため、このメーカのサポートは既に存在しません。
ですが、XFree86-4.x (xは少なくとも1より大きい数字) では Voodoo3 カードを 16bit カラーモードでちゃんと使用できることが分かっています。
同様に、もっと新しいカードもうまく動作するはずです。
もし XFree86 バージョン 3.X をまだ使っていて動作に問題があるのでしたら、アップグレードすることを検討してください。
最近の Debian または SuSE によるディストリビューションではうまく動作することが報告されています。
C.6 Linux における ATI チップベースのカード †
XFree86-4.1 またはそれ以降では ATI チップをサポートしています。
Rage 128 チップをベースとした数多くの AGP ボード 〜 単なる Rage 128 から ATI Xpert 2000まで 〜 のほとんどを FlightGear で使うことができます。
XFree86-4.1 以降では、初期の Radeon チップ 〜 XFree86-4.2 で Radeon 7500 まで、 XFree86-4.3 で Radeon 9100 まで 〜 を使用できます。
XFree86-4.3.0 では注意が必要です。
Radeon ドライバの中に (既知の) バグが含まれた状態でリリースされています。
進行中の開発版では、R100用 (Radeon 7000 から 7500 まで) と R200 用 (Radeon 8500 と 9100) の有効なドライバが提供されています。
ATI は独自のバイナリドライバを代替として提供しています。
パッケージと一緒に提供されるスクリプトを使ってカーネルモジュールをビルドし、お使いの XFree86 ツリーの中にいくつかの X サーバモジュールを追加する必要があります。大抵のケースでは、RPM インストールがそれをやってくれます。
C.7 Linux における自分用の OpenGL サポート環境のビルド †
最近の Linux ディストリビューションでは、適切な OpenGL サポートを設定することは実に簡単です。
例えば SuSE には、必要なもの全てに加えて、ちょっと欠けているものを自動調整するため小さないくつかのシェルスクリプトが含まれています。
ビルド済みの FlightGear を単に実行したいだけであれば、提供されている FlightGear パッケージに加えて、必須のランタイムライブラリ (とカーネルモジュール) を使うと良いでしょう。
どれを選ぶべきかはパッケージマネージャがあなたに教えてくれます。
自分で作ったカーネルモジュールを実行したい場合、つまりFlightGear を自分でコンパイルしたかったり、X サーバの設定ファイルに自分で手を加えたり、あるいは自家製の Linux 「ディストリビューション」を実行したりする (全てを自分自身でコンパイルしたいということを意味します) のなら、この節は有用でしょう。
まず、Linux 上で OpenGL サポートをビルドする部分を見てみましょう。
最初に、お使いのグラフィックスアダプタをサポートする Linux カーネルについてです。
オープンソースのドライバがどのグラフィックス ハードウェアを元々サポートしているかの例が以下にあります。
http://dri.freedesktop.org/wiki/Status (リンク先変更)
グラフィックス チップファミリーのいくつかは、Linux 上で X window system を実行する XFree86 では直接サポートされておらず、またいくつかは部分的にしかサポートされていません。
その理由は、ベンダーが自分たちのチップに関するプログラミング情報の提供を望んでいないからです。
こういった場合 〜 特に IBM/DIAMOND/now や ATI FireGL グラフィックスボード、NVIDIA GeForce ベースのカード 〜 においては、XFree86 のグラフィックス表示構造の開発進行に対してベンダーが追従する意思があるかどうかに依存します。
これらのボードは非常に良いパフォーマンスをもたらすことが判明するかもしれませんが、多くの場合では 〜 最近の PC の CPU スピードを考えると 〜 FlightGear を許容するパフォーマンスを持つカードの選択肢は数多く存在します。
ディストリビューションが提供するカーネルを用いている限り、必要とする全てのカーネルモジュールを適当な場所で見つけることができるはずです。
もしカーネルを自分でコンパイルするなら、カーネルの設定メニューの中の2つのサブメニューに注意する必要があります。
それは「Character devices」メニューの中にあります。
AGP サポートは、Linux 上のハードウェアアクセラレータ OpenGL サポートに対して必須ではないことに注意してください。
これ (訳注: ハードウェアアクセラレーション?) は いくつかの PCI カード (もしまだ持ってるなら 3dfx Voodoo3 PCI など) でも非常に良く動作します。
とはいえ、最近の PC グラフィックスカードは高速データ転送のためにAGP「バス」を使っていますが。
お使いのチップセット 〜 それが何かはメインボードのマニュアルを見たほうが良いかもしれません 〜 の「AGP Support」に加えて、グラフィックスボードに対する「Direct Rendering Manager」を必ず有効にする必要があります。
古い Linux カーネルに含まれていた DRI は最近の XFree86 リリース (4.1.0 以上) をサポートしていないかもしれないことにご注意ください。
また XFree86-4.0.x の DRI は、2.4.8 から 2.4.17 までの新しい 2.4.x カーネルでサポートしていないことに注意が必要です。
カーネルモジュールとカーネル自体のビルドとインストールが終わったら、「agpgart」モジュールを手動でロードするか、あるいはカーネルにそれをリンクした場合は、新しいカーネルの立ち上げと実行のためにリブートすると作業が完了します。
> Linux agpgart interface v0.99 (c) Jeff Hartmann
> gpgart: Maximum main memory to use for agp memory: 439M
> agpgart: Detected Via Apollo Pro chipset
> agpgart: AGP aperture is 64M @ 0xe4000000
Linuxのカーネルをブートした時にこのようなメッセージがもし表示されなければ、正しいチップセットをあなたが間違えたのかもしれません。
Linux システム上でハードウェアアクセラレータ付きの Open GL サポートを有効にするという第一部はこれで完了です。
第二部は OpenGL に対する X サーバの設定です。
これは大したことではなくて、X サーバの起動時に適切なモジュールをロードするように単に指示するだけです。
そのためには、設定ファイル /etc/X11/XF86Config を編集します。
最近の Linux ディストリビューションには、この仕事を望みどおりに行うためのツールが提供されているはずです。
X サーバ設定ファイルの「Module」セクションに次の2つの指示が存在することを確認してください。
Load ``glx''
Load ``dri''
全てがうまくいくと、お使いのグラフィックスカードの DRI サポートに対して適切な Linux カーネルモジュールを X サーバがロードします。
Linux カーネルモジュールの正確な名前は XF86Config の「Device」セクションの「Driver」宣言で決定します。
「Device」セクションがどう見えるかの例を3つ挙げますのでご覧下さい。
Section ``Device''
BoardName ``3dfx Voodoo3 PCI''
BusID ``0:8:0''
Driver ``tdfx''
Identifier ``Device[0]''
Screen 0
VendorName ``3Dfx''
EndSection
Section ``Device''
BoardName ``ATI Xpert2000 AGP''
BusID ``1:0:0''
Driver ``ati''
Option ``AGPMode'' ``1''
Identifier ``Device[0]''
Screen 0
VendorName ``ATI''
EndSection
Section ``Device''
BoardName ``ATI Radeon 32 MB DDR AGP''
BusID ``1:0:0''
Driver ``radeon''
Option ``AGPMode'' ``4''
Identifier ``Device[0]''
Screen 0
VendorName ``ATI''
EndSection
「AGPMode」オプションを使うと、メインボードとグラフィックスカードの許す限りで AGP のパフォーマンスをチューンできます。
ボード上の AGP スロットは1つしかないので、AGP システムの BusID は常に「1:0:0」に設定すべきです。
一方、PCI BusID は、グラフィックスカードを挿しているスロットによって異なります。
どうにもならない状況においては「lspci」が助けてくれるでしょう。
また、X サーバの起動時に記録される /var/log/XFree86.0.log の最後を見ると、自分のカードがどの PCI スロットにあるのかが分かるはずです。
以上、第二部の Linux マシンにおけるハードウェアアクセラレータ付きの OpenGL サポートのインストールでした。
第三部には二つの項目があります。
第一は、現存のアプリケーションを実行するのに必要な OpenGL ランタイムライブラリを用意することです。
FlightGearをコンパイルするためには、ふさわしい開発用のヘッダも必要です。
X window system 全体のコンパイルはこのアブストラクトの主題ではないので、お使いのディストリビューションが必要なライブラリとヘッダを提供していることを期待することにします。
何らかの OpenGL サポートをインストールするようパッケージマネージャに指示した場合は、OpenGL のテスト用ユーティリティをいくつか探しておく必要があります。
少なくとも、「glxinfo」か「gl-info」があるはずです。
これらのコマンドライン ユーティリティは、前述のステップがうまくいっているかどうかを試すのに便利です。
起動しない場合は、OpenGL ランタイムライブラリの存在にそれらが依存していることを知っているはずのパッケージマネージャが何かミスをしています。
起動する場合は第一段階を通過しました。
ではこのツールの出力を見て、
OpenGL renderer string:
で始まる行を見てください。
「Indirect」という単語に注意して、
OpenGL renderer string: FireGL2 / FireGL3 (Pentium3)
または
OpenGL renderer string: Mesa DRI Voodoo3 20000224
あるいは
OpenGL renderer string: Mesa DRI Radeon 20010402
AGP 4x x86
OpenGL renderer string: Mesa GLX Indirect
のような記述を見つけたら、何かミスをしているのはあなたです。
というのは、OpenGL は、CPU上で単体で実行されるソフトウェアライブラリの中で処理されるからです。
この場合は、本章のこれまでの項を良く見たほうが良いでしょう。
では、全ての必要なライブラリが適切な場所にあることを確認してください。
FlightGear を実行するには OpenGL ライブラリが三つ必要です。
大抵の場合は、/usr/lib/ にあります。
/usr/lib/libGL.so.1
/usr/lib/libGLU.so.1
/usr/lib/libglut.so.3
これらはライブラリ自身の場合もあれば、他のディレクトリの適切なライブラリへのシンボリックリンクの場合もあります。
例えば SuSE は libGL を「xf86_glx」パッケージに、libGLU を「xf86glu」に、libglut を「mesaglut」に収録しています。
加えて、FlightGear のために、「plib」パッケージの一部である libplib が必要です。
FlightGear を自分でコンパイルするためには、すでに触れたように適切なヘッダファイルが必要であり、多くの場合は /usr/include/GL/ の中にあります。
libGL に対しては2つのファイルが必要であり、それらは「xf86glx-devel」ではなくて「mesa-devel」で提供されています (「xf86glx-devel」でも提供されていますが正常に動作しません)。
/usr/include/GL/gl.h
/usr/include/GL/glx.h
「xf86glu-devel」には libGLU のヘッダファイルが同梱されています。
/usr/include/GL/glu.h
「mesaglut-devel」には libglut のヘッダファイルが同梱されています。
/usr/include/GL/glut.h
「plib」パッケージにはさらにいくつかのライブラリとヘッダが同梱されていますが、ここで触れるには数が多すぎます。
これらが全て存在し、かつ快適なコンパイル環境を持っているのであれば、FlightGear をコンパイルして結果を楽しむための準備が整いました。
特定の XFree86 リリースにおける OpenGL の問題についての更なる情報はここにあります。
http://www.xfree86.org/<RELEASE NUMBER>/DRI.html
DRI についての追加ドキュメントは以下にあります。
http://www.precisioninsight.com/piinsights.html (オリジナルサイト消滅)
ある「スペアパーツ」でミスをした場合は以下をご覧ください。
http://dri.freedesktop.org/wiki/Documentation (リンク先修正)
C.8 Macintosh における OpenGL †
OpenGLは、Mac OS 9.x とそれ以降にプレインストールされています。
Mac OS 9.x にインストールされているものよりも新しいバージョンは以下にあります。
http://www.apple.com/opengl
Mac OS X ではアップデート通知を自動的に受け取るはずです。
最後に一言: ドライバに付属するプログラムのうちの1つを使って自分の OpenGL サポートをテストし、確実に機能していることを確かめることをお勧めします。
また、テストに使える小さなプログラム (良くあるのはスクリーンセーバ) もたくさんあります。
FlightGear はできるだけ高速にカードを動かそうとしますので、自分のグラフィックス アクセラレータが動作することに確信できることが大事です。
もし自分のドライバがうまく動かなかったり不安定な場合、問題の原因を見つけ出すことは時間のかかる困難な作業になることでしょう。
編集メモ