2008-09-11 10 views
3

NVIDIA 8400GS(256MB)を使用して以前は60FPS(モニタの同期レート)で動作していた2画面DirectXアプリケーションがあります。しかし、512 MBのRAMを搭載したカードのためにカードを交換すると、フレームレートは40 FPSを超えるように苦労します。 (私たちはトリプルバッファリングを使用しているので、これは高くなります。)2枚のカードは同じメーカー(PNY)のものです。それ以外のものはすべて同じです。これはWindows XP Embeddedアプリケーションで、各カードの新鮮なイメージから始めました。ドライバのバージョン番号は169.21です。グラフィックスカードのアップグレード時にフレームレートが低下する原因は何ですか?

アプリケーションはすべて2Dです。 I.テクスチャリングされたクワッドとプリレンダリングされたグラフィックスがたくさんあります(したがって、カードのメモリをアップグレードする必要があります)。また、圧縮されたアニメーションをCPUが即時にデコードします。これにはテクスチャロックが含まれます。ロックは永遠に取ることができますが、デバイスのUpdateTextureメソッドを使用して、レンダリングされたテクスチャを更新して更新するために、CPU用に別々のシステムメモリテクスチャを使用することも試みました。全体的なパフォーマンスの差はありません。

インターネットでDirectXのパフォーマンスに関するすべてのFAQを読んだことがありますが、私がDirectXプロジェクトで作業したのはこれが初めてです。 :)

私が主題にいる間に他にもう1つ;スワップチェーンでPresentを呼び出すと、現在のパラメータ(PresentationInterval)と呼び出し自体のフラグの両方でD3DPRESENT_DONOTWAITを使用しているという事実にかかわらず、DirectXは現在の完了を待ちます。これは2画面のアプリケーションであるため、2つのモニタがジェンロックされていないように見えるため、スレッドプールを通じて現在の呼び出しを実行して回避しています。これの根底にある原因は何か?

+0

あなたは16の代わりに8つのシェーダユニットしか持たない65nmの "回転2"バージョンを買うことに騙されているかもしれません。つまり、4倍のメモリとDDR3でGT610を使用できるのであれば8400GS同じ価格でシェーダユニットの数を4倍に増やすことができますか? (プラス、TDPは29W対40Wです) – Damon

答えて

2

カードはまったく同じですか(両方のGeForce 8400GS)、メモリサイズだけが異なりますか?非常に頻繁にメモリサイズが異なると、クロックレートが若干異なるようになります(つまり、メモリが増えたカードではメモリが低下する可能性があります)。

まず、GPU-Zのようなものを使用して、GPUコア&のメモリクロックレートを確認してください。

+0

これが理由だと思います。ありがとう。 –

1

サーフェスロックが問題であるかどうかを確認するには簡単なテストです。テクスチャの更新をコメントアウトし、フレームレートが60hzに戻るかどうかを確認するだけです。残念なことに、ロックされたサーフェスに書き込んでリソースを更新すると、パフォーマンスが低下します。テクスチャでミップマップを使用していますか?私は、DX9がミップマップの自動生成を追加したことを知っている、それらを生成するために多くの時間を費やす可能性があります。各フレームで同じリソースを常にロックしている場合は、テクスチャ以外のトリプルバッファリングのようなテクスチャプールを作成することもできます。レンダリングには1つのテクスチャを使用させ、次回のアップデートでは、レンダリングに使用されていないプール内の次に使用可能なテクスチャを選択します。もちろん、あなたの記憶は拘束されていないか、アニメーション化されたテクスチャと唯一の違いはありません。

+0

ミップマップは無効です。私は動的テクスチャをダブルバッファリングし、何が起こるかを見てみましょう。ありがとう。 –

関連する問題