OpenGL レンダリング パラメータのオーバーライド
iOS プラットフォームや Android プラットフォームでは、グラフィカル アプリケーションのパフォーマンスを向上させるために、OpenGL レンダリング パラメータをオーバーライドすることができます。
たとえば、3D モデルを使用しない場合は、深度バッファを無効にできます。同様に、塗りつぶされたパスなどのベクタ キャンバス図形を使用しない場合は、ステンシル バッファを無効にするのが安全です。見栄えよりもパフォーマンスの高さを重視する場合は、24 ビットや 32 ビットではなく 16 ビットの色深度を使用するとよいでしょう。
OpenGL パラメータをオーバーライドするには:
- お使いのユニットの uses リストに FMX.Platform.pas を追加します。
-
レンダリング セットアップ手続きを次のように記述します。
procedure RenderingSetupCallback(const Sender, Context: TObject; var ColorBits, DepthBits: Integer; var Stencil: Boolean; var Multisamples: Integer); begin // OpenGL レンダリング設定をオーバーライドしてカスタム値を使用する ColorBits := 16; // デフォルトは 24 DepthBits := 0; // デフォルトは 24 Stencil := False; // デフォルトは True Multisamples := 0; // デフォルトは TForm.Quality または TForm3D.Multisample によって決まる end;
-
登録手続きを次のように記述します。
procedure RegisterRenderingSetup; var SetupService: IFMXRenderingSetupService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXRenderingSetupService, IInterface(SetupService)) then SetupService.Subscribe(RenderingSetupCallback); // SetupService.Unsubscribe もある(この場合はフックを削除) end;
- ユニットの
initialization
セクションでRegisterRenderingSetup
を呼び出します。