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つのモニタがジェンロックされていないように見えるため、スレッドプールを通じて現在の呼び出しを実行して回避しています。これの根底にある原因は何か?
あなたは16の代わりに8つのシェーダユニットしか持たない65nmの "回転2"バージョンを買うことに騙されているかもしれません。つまり、4倍のメモリとDDR3でGT610を使用できるのであれば8400GS同じ価格でシェーダユニットの数を4倍に増やすことができますか? (プラス、TDPは29W対40Wです) – Damon