9

アップデート4ホットフィックス1でDelphiXE2を使用しています

私のデフォルトのFMXアプリは非常に遅いと言っており、イベントではしばらくの間フリーズします。例:ボタンをクリックすると、アプリケーション全体が数秒間フリーズします(ただし、そのイベントの最初の実行時のみ)。だから私はそれがGPUの問題かもしれないと思い、私のデフォルトのDprファイルを;として編集しました。

uses
  FMX.Forms,  fmx.Types,..

{$R *.res}

begin
  Application.Initialize;

  GlobalUseHWEffects := False   ;
  GlobalUseDirect2D := False  ;
  GlobalUseDirect2DSoftware := False    ;
  GlobalUseGDIPlusClearType := True    ;
  GlobalDisableFocusEffect := True   ;

  Application.CreateForm(...);
  Application.Run;
end.

これで問題なく動作しますが、CPU使用率は以前と同じです(マウスを動かすと25%)

次に、コードを次のように変更しました

  GlobalUseHWEffects := true  ;
  GlobalUseDirect2D := False  ;
  GlobalUseDirect2DSoftware := False    ;
  GlobalUseGDIPlusClearType := True    ;
  GlobalDisableFocusEffect := True   ;

これですべてがスムーズに機能し、統計処理時間とCPU使用率のわずかな遅延のみが非常に低くなります(0〜2%)(そのため、Firemonkeyが必要です)

これで、メニューバーを除くすべてのコントロールが期待どおりに機能します。上記の設定はメニューバーに適用されず、デフォルトの動作で機能します(アプリ全体が数秒間フリーズします)。

この問題を克服するために私は何ができますか。

4

1 に答える 1

1

本当の問題は、いくつかのファイアモンキーエフェクトとファイアモンキーのデフォルト設定にありました

デフォルトはパフォーマンスの問題の本当の原因ですGlobalUseDirect2D = trueGlobalUseHWEffects := true 、両方を有効にすると、マシンでCPUとGPUの両方が使用されるため、どちらかをfalseにします。CPUの使用量を減らすためGlobalUseDirect2D = falseに行うことをお勧めします。GlobalUseHWEffects := true

And now you will be also able to get improved fonts (best ever firemonkey can generate)

すべての顧客がハイエンドのグラフィックGPUを使用するわけではありません

私はIntelMobileグラフィックチップを使用しているので、すべてのファイアモンキー効果をサポートするすべての機能を備えているとは思いません。次のコードとコメントはFMX.Typesで見ることができます

// On low-end hardware or mobile bitmap effects are slowly
  GlobalDisableFocusEffect: Boolean = False;

しかし、なぜデフォルトでfalseになっているのか理解できません(したがって、有効と無効はクライアントのGPU機能によって異なります)

GlobalDisableFocusEffectを使用すると、Effectsを使用できなくなります(例:outergloweffect)....しかし、このステートメントはまだ真実ではありません...。

GlobalDisableFocusEffectによって、すべての効果が無効になっているわけではありません。

例えば

  1. WindowsスタイルのボタンスタイルのTinnergloweffectがフリーズの理由です
  2. ダークスタイルのheaderitemstyleのTinnergloweffectがフリーズの理由です。

例がたくさんあるかもしれません...

したがって、私のシナリオでは、スタイルからすべての効果を削除することを余儀なくされました。暗いスタイルは、UIのようなネイティブよりもクールに見えます)

于 2012-06-04T13:06:08.330 に答える