2

皆さんこんにちは!

現在のプロジェクトの 1 つでかなり厄介な問題が発生しています。現在のプロジェクトの 1 つで、ハードウェア ライブラリ (Andreas Hausladen による NVAPI Pascal ヘッダー変換) を使用しています。このライブラリを使用すると、NVIDIA GPU から情報を取得できます。私は温度を取得するためにそれを使用しています. Firemonkey の助けを借りTAnimateFloatて、カスタムメイドのダイヤルの角度を調整して温度を示しています.

FMX はデフォルトで Windows の Direct 2D に設定されているため、さまざまな「ゲーマー」ツール (MSI Afterburner、FRAPS など) を使用して FPS を監視できます。

私が抱えている問題は、システムをスリープ モード (RAM/S3 にサスペンド) にしてから再起動すると、アプリケーションのインターフェイスが (部分的または完全に) 暗くなり、UI に何も表示されないことです。目に見えてさわやかです。NVAPI ライブラリの初期化を定期的に呼び出し、タイマーで結果を確認していますが、問題は解決しません。私も実行ProcessMessagesしており、親ダイヤルとそれは子コントロールです(フォームまたは同等のものrepaintを見つけることができないため)。repaint

ライブラリのさまざまなバージョンを試しましたが、それぞれが同じ問題を示しています。次の段落は、これが実際には問題ではなく、実際にはレンダラーに問題があることを示しています。

私には1つの解決策がありますが、もっとエレガントで利用可能なものがあるかどうか知りたいです。私が持っている解決策には、プロジェクトのソースFMX.Types.GlobalUseDirect2D := False;に前に追加することが含まれます。Application.Initializeただし、これにより、FMX は Direct2D ではなく GDI+ を使用するようになります。もちろん動作しますが、可能であればオプションとして D2D をオープンにしたいと考えています。パラメータに応じてオン/オフを切り替えることができますFindCmdLineSwitchが、D2D から GDI+ に、またはその逆に変更するには、アプリケーションを再起動する必要があります。

奇妙なことに、FPS カウンター (私の場合は FRAPS から) は、UI でまだアクティビティが発生していることを示しています (値が予想どおりに変化するため) が、UI 自体は目に見えて更新されていません。

これは Direct2D に関連する問題ですか、それとも Firemonkey の実装のバグですか? さらに重要なことに、D2D を無効にするよりも良い修正方法はありますか? 最後に、関連して、最初にアプリケーションを終了せずにアプリケーションを「再初期化」することは可能ですか?

4

1 に答える 1

1

これは、アップデート4の修正プログラム以前のFMの問題である可能性があります-26664 / QC104210ユーザーのロック解除後にFireMonkeyHDフォームが応答しない問題を修正します-これをインストールすると、問題解決する場合があります。

アップデートは、EDNからの登録ユーザーのダウンロードの一部である必要があります(直接リンクhttp://cc.embarcadero.com/item/28881)。

于 2012-05-25T15:58:23.020 に答える