こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

DirectX7とDirectX9の速度の違い

フリーソフトや市販の3Dゲームで、DirectX7や8で開発されたゲームは割りと
私の非力なPCでもさくさく動くのですが、同じゲームのDirectX9版見つけ、
試しに入れてみると、ものすごく重くなっていました。

実際には試していませんが、仮にC++で開発したとしてDirectX7とDirectX9で
3Dモデルや画像を同じ数同じような条件で沢山表示させたとしてら、
DirectX7の方が動作が軽いのでしょうか?

もしそうなるなら恐らくDirectX9の方が機能が多いので標準でより多くのメモリを
システムが占有してしまうからだと推測していますが・・。

DierctX10や11など、DirectXのバージョンが上がるほど重くなるものなのでしょうか?

投稿日時 - 2009-03-26 06:38:06

QNo.4827682

暇なときに回答ください

質問者が選んだベストアンサー

「あなたのパソコンのグラフィックボードが、DirectX8までしかサポートしてない」のではないでしょうか?

グラフィックボードがハード的にDirectX8までをサポートしているならば、DirectX7や8向けに作られたゲームは、グラフィックボードがハードで処理しますから、サクサク動いて当然です。

しかし、グラフィックボードがDirectX9をサポートしていない場合、ゲームがDirectX9以降の機能を呼び出すと、DirectX9のデバイスドライバは「グラフィックボードがDirectX9をハードでサポートしてないから、ソフトウェアで処理しよう」として、グラフィックボードを使用せず、ソフトウェアでエミュレーション処理します。

ハードを使わずソフトで処理するんですから、ものすごく重くなって当然です。

パソコンにDirectX9をインストールし、DirectX9用のゲームを動かすなら「DirectX9対応の3Dアクセラレータ(GPU)が搭載されたグラフィックボード」を搭載しなければなりません。

因みに「3Dアクセラレータ(GPU)が載ってないグラフィックボードを載せたパソコンや、3Dアクセラレータ(GPU)が載ってないノートパソコン」では、DirectX9で増えた新機能の殆どすべてが、ソフトでエミュレーション処理されます。

なので、俗に「3Dポリゴンゲー」と言われるゲームは、起動時に「3Dがハードでサポートされてない」とエラーが出てまったく動かないか、ソフトでエミュレーション処理されて激重になります。

DirectX9用のゲームをサクサクと動かすなら「DirectX9対応の3Dアクセラレータ(GPU)が搭載されたグラフィックボード」が必須になります。

なお「DirectX9対応の3Dアクセラレータ(GPU)が搭載されたグラフィックボード」と言っても、すべての機能がハード処理される訳ではなく、安価なボードだと「一部の機能はソフトウェアでエミュレーション処理されます」って場合があります。

投稿日時 - 2009-03-26 17:08:06

お礼

わたしのPCはノートで数年内に発売されたものでしてDirectX9ゲームもめちゃくちゃ重いと
いうほどでもないのですが、
やはりDirectX7世代のゲームに比べるとどうも重いと感じることが多いのです。
恐らくおっしゃるように一部のDirectX9の機能がハードウェアで対応されてないからかなぁと思いました。
回答ありがとうございます。

投稿日時 - 2009-03-26 17:59:03

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

アプリが9と8で別々に提供されているということは、それぞれハードウェアに最適化しています。

具体的には8と9では、固定シェーダがプログラマブルシェーダになり、固定シェーダは互換用のレガシーになりました。9にするということは、即ちシェーダ2,0を利用するということになります。

光源を柔軟化したシェーダ2は、CPUでは全てを処理できない上に、処理できても、演算が複雑です。これが答えになります。

尚、8以前ではバージョン差による速度差が余りなかったのは、9以降で上記の固定処理を廃し、プログラマブル化したのに対し、以前は固定処理の延長だったためです。

投稿日時 - 2009-03-26 10:20:16

お礼

私のPCではむしろシェーダーが使われたX9プログラムは激重ですね。。
GPUがオンボードだからかもしれません。

投稿日時 - 2009-03-26 18:00:14

ANo.1

単純には判断できません。
DirectXはバージョンが上がる度に機能が増えていっています。
また、その機能を使用するためにH/Wが実装されていない場合はS/Wによるエミュレーションを行います。
H/W実装を前提にしている機能を使用していれば、当然H/W実装されていないPCではS/Wエミュレーションにより負荷がかかることになります。
従って、単純にバージョンだけの問題とは言えません。

投稿日時 - 2009-03-26 09:30:43

お礼

恐らくそれでしょうね。H/WとかS/Wってハードウェア、ソフトウェアの略でしょうか?

投稿日時 - 2009-03-26 18:01:15

あなたにオススメの質問