[解決済み] 3Dゲームってなんであんなに効率的なの?[クローズド]
質問
私には理解できないことがあります。GTA IVのような大作PCゲームがCPUの50%を使用して60fpsで動作しているのに、回転するティーポットのDXデモが60fpsで、なんと30%も使用されているのですか?
どうすれば解決するの?
一般的に、それは
- ゲームはレンダリングに必要なものについて最適化されており
- ハードウェアを特別に活用するのです。
例えば、簡単にできる最適化としては、見えないものを実際に描こうとしないことです。の街並みのような複雑なシーンを考えてみてください。 グランド・セフト・オートIV . レンダラーは、実際にはすべての建物や構造物をレンダリングしているわけではありません。その代わり、カメラに見えるものだけをレンダリングしています。もし、同じ建物の裏側に回り込んで、元のカメラの方を向いたら、中途半端に空洞化したシェル構造を見ることができます。カメラで見えないところはすべてレンダリングされない。見えないのだから、見せようとする必要はないのです。
さらに、特定のハードウェアに対して開発する場合、最適化された命令や特殊なテクニックが存在し、より高速化を図ることができます。
もうひとつは、デモがなぜそんなにCPUを使うのかという質問です。
<ブロッククオート... 一方、60fpsで回転するティーポットのDXデモは、なんと30%も消費するのですか?
グラフィックスAPIのデモではよくあることです(例えば
dxdemo
と呼ばれるものにフォールバックしてしまいます。
ソフトウェアレンダラー
ハードウェアが、きれいなサンプルを表示するために必要な機能をすべてサポートしていない場合。これらの機能には、影、反射、レイトレーシング、物理、その他が含まれるかもしれません。
これは、APIの全機能をアピールするために、存在しそうもない完全にフル装備のハードウェアの機能を模倣したものです。しかし、そのハードウェアは実際には存在しないので、代わりにあなたのCPUで実行されます。これは、グラフィックカードに委ねるよりもはるかに非効率的です。
関連
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] \0-9]よりも効率が悪い
-
[解決済み] Eclipseを高速化する方法とは?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Dockerコンテナのランタイムパフォーマンスコストとは何ですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】再帰はループより速いことがあるのか?
-
[解決済み】Goはどうしてそんなに早くコンパイルできるのですか?
-
[解決済み] memcachedはRedisに比べれば恐竜のようなもの?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] LOWER LIKE vs iLIKE
-
[解決済み】JSFがゲッターを複数回呼び出す理由
-
[解決済み】Goはどうしてそんなに早くコンパイルできるのですか?
-
[解決済み】長さnのソートされていない配列の中でk番目に大きい要素をO(n)で見つけるにはどうすればよいですか?)
-
[解決済み】x86_64アセンブリで無駄なMOV命令を導入すると、なぜタイトループが速くなるのでしょうか?
-
[解決済み】インターネット接続が遅い場合のシミュレーション【終了しました
-
[解決済み] gccのffast-mathは実際に何をするのですか?
-
[解決済み] memcachedはRedisに比べれば恐竜のようなもの?[クローズド]
-
[解決済み] あなたが見た中で最も馬鹿げたペシミゼーションは何ですか?[閉店]
-
[解決済み] Haskellプログラムにおけるガベージコレクションの一時停止時間の削減