アプリケーション構成リファレンス¶
Kanzi アプリケーションを設定できます。
C++アプリケーションでは、アプリケーションクラスの
Application::onConfigure関数をオーバーライドします。Kanzi は、application.cfgを読み込む前およびグラフィックスサブシステムを初期化する前に、アプリケーション初期化の一環としてこの関数を呼び出します。この関数を使用してアプリケーションプロパティを設定します。application.cfgで、Kanzi Studio プロジェクトのパラメーターを設定することにより、アプリケーションを再コンパイルしたり、C++ アプリケーションを使用したりせずに行うことができます。
application.cfg で指定した設定は、Application::onConfigure で指定した設定を上書きします。
使用する application.cfg を設定する¶
ディレクトリに複数の Kanzi アプリケーション実行可能ファイルがある場合、各実行可能ファイルに対して個別の設定ファイルを設定することができます。
コマンドラインから Kanzi アプリケーションを実行する際に使用する application.cfg を設定するには、アプリケーションの実行可能ファイルの名前の後に -config オプションと設定ファイルの名前を入力します。
例えば、Kanzi アプリケーション MyApplication を myConfiguration.cfg ファイルで実行するには、次のようにします。
MyApplication.exe -config=myConfiguration.cfg
application.cfg を使用する¶
application.cfg を使用して Kanzi アプリケーションを構成するには、パラメータ名とその値が入った application.cfg ファイルを以下のディレクトリの中に作成します。
<ProjectName>/Application PlayerC++アプリケーションのない Kanzi Studio プロジェクトがある場合<ProjectName>/Application/binC++アプリケーションを含む Kanzi Studio プロジェクトがある場合
Kanzi アプリケーションを起動すると、アプリケーションは application.cfg のパラメーターを使用してアプリケーションを構成します。
application.cfg のエラーハンドリング¶
application.cfg が欠落しているか破損している場合、Kanzi アプリケーションは対応するエラーメッセージを記録し、デフォルトの設定で実行を続行します。
独自の application.cfg エラーハンドリングを実装したい場合は、そのようなエラーを検出するためのカスタムロガーを作成できます。カスタムロガーの作成 を参照してください。
application.cfg を読まずにアプリケーションを実行する¶
一部の組み込みプラットフォームでは、application.cfg ファイルを読み取ることがパフォーマンスに影響を与えることがあります。
application.cfg ファイルを読み込まずにアプリケーションを実行するには、コマンドラインで -config="" オプションを使用して Kanzi アプリケーションを起動します。
例えば、application.cfg ファイルを読み込まずに MyApplication という名前の Kanzi アプリケーションを実行するには、次のようにします。
MyApplication.exe -config=""
ロード¶
BinaryName¶
You can set which kzb file or kzb configuration file your Kanzi application loads when you launch your Kanzi application.
kzb ファイル を参照してください。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Loads the kzb file named my_application.kzb.
BinaryName = "my_application.kzb"
# Loads the kzb configuration file my_application.kzb.cfg that lists
# all the kzb files that your Kanzi application loads.
BinaryName = "my_application.kzb.cfg"
|
||
// Loads the kzb file named my_application.kzb.
configuration.binaryName = "my_application.kzb";
// Loads the kzb configuration file my_application.kzb.cfg that lists
// all the kzb files that your Kanzi application loads.
configuration.binaryName = "my_application.kzb.cfg";
|
フォントエンジン¶
アプリケーションの起動時に読み込むフォントエンジンを設定して、アプリケーション内のテキストをレンダリングすることができます。
FreeTypeは、FreeTypeラスタライザー、HarfBuzzシェイパー、ICU双方向ライブラリ、および行分割のためのlibunibreakを使用します。これはデフォルトのフォントエンジンです。
iTypeは、Monotype iTypeラスタライザーとWorldType® Shaper™を使用してシェーピングを行います。
フォントエンジンをロードしない場合、Kanzi はアプリケーション内のテキストをレンダリングしません。
フォントエンジンを読み込む際には、次の点に注意してください。
スタティックビルドでは、ロードしたいフォントエンジンをアプリケーションにスタティックリンクする必要があります。
動的ビルドでは、Kanzi がフォントエンジンライブラリをロードします。
Kanzi Studio Preview がテキストをレンダリングするために使用するフォントエンジンを設定することもできます。プレビューのフォントエンジンを設定する を参照してください。
|
|
||
|
|||
値 |
|
||
|
# Load the iType font engine at application startup.
FontEngine = IType
|
||
// Load the iType font engine at application startup.
configuration.fontEngine = ApplicationProperties::FontEngine::IType;
|
フォントエンジン辞書¶
Kanzi iTypeフォントエンジンがタイ語テキストで単語を折り返す方法をカスタマイズするには、iTypeフォントエンジンに組み込まれているものの代わりに使用したいタイ語辞書を設定することができます。
iTypeフォントエンジンを使用したタイ語テキストのワードラッピングのカスタマイズ を参照してください。
|
|
||||
|
|||||
値 |
|
||||
|
# Set additional backend dictionaries.
ITypeDictionaryUrls = file:///usr/share/itype/thai-dictionary.wtd
|
||||
// Set additional backend dictionaries.
configuration.fontEngineDictionaryUrls[ApplicationProperties::FontEngine::IType] = "file:///usr/share/itype/thai-dictionary.wtd";
|
ModuleNames¶
Kanzi アプリケーションを起動する際に、どのプラグインを Kanzi アプリケーションがロードするかを設定できます。
|
|
||
|
|||
値 |
|
||
|
# Loads the plugin DLL files MyPlugin1.dll and MyPlugin2.dll.
ModuleNames = "MyPlugin1; MyPlugin2"
|
||
// Loads the plugin DLL files MyPlugin1.dll and MyPlugin2.dll.
configuration.moduleNames = {"MyPlugin1", "MyPlugin2"};
|
DeploymentQueueBudget¶
Kanzi は、UIスレッドでデプロイされるリソースのキューを保持します。リソースをデプロイするために、Kanzi が各フレームで費やす時間を制御するには、DeploymentQueueBudget を使用します。多くの小さなリソースがデプロイメントキューにある場合、0より大きい時間予算はアプリケーションリソースの読み込み時間を大幅に短縮することができます。
リソースデプロイメントに費やす時間の総量に対して、時間予算は厳しい制限を設けていません。長時間実行されるデプロイメントタスクは、割り当てられた時間を超えることがあります。
デフォルト値の0ミリ秒に設定されている場合、Kanzi はリソースデプロイメントキューから1フレームごとに1つのリソースのみをデプロイします。
UIの応答性とリソースのロードのバランスを取る を参照してください。
|
|
||
|
|||
値 |
|
||
|
# Each frame Kanzi spends up to 2 milliseconds to deploy resources.
# Kanzi keeps deploying resources until it spends the allocated time budget
# for that frame.
DeploymentQueueBudget = 2
|
||
// Each frame Kanzi spends up to 2 milliseconds to deploy resources.
// Kanzi keeps deploying resources until it spends the allocated time budget
// for that frame.
configuration.deploymentQueueBudget = 2;
|
LoadingThreadCount¶
ユーザーがマルチコアプロセッサを備えた環境で Kanzi アプリケーションを実行すると、Kanzi は自動的に複数のCPUコアを使用して、kzbファイル内のGPUリソースをRAMにロードします。
リソースを並列でロードする を参照してください。
GPUリソース Kanzi が並行してロードするものには、すべての種類のテクスチャ、シェーダー、メッシュが含まれます。これらのリソースをRAMからGPUメモリに展開し、プレハブテンプレートをロードするために、Kanzi は常にメインスレッドを使用します。画像とテクスチャのベストプラクティス、シェーダーのベストプラクティス、メッシュベストプラクティス を参照してください。
|
|
||
|
|||
値 |
|
||
|
# Switches off the use of multiple cores for loading your application.
# Loads your application resources using the main thread.
LoadingThreadCount = 0
# Uses six threads to load your application.
LoadingThreadCount = 5
|
||
// Switches off the use of multiple cores for loading your application.
// Loads your application resources using the main thread.
configuration.loadingThreadCount = 0;
// Uses six threads to load your application.
configuration.loadingThreadCount = 5;
|
MaxPendingResources¶
ロードスレッドが同時に処理するリソースの最大数を設定できます。リソースの数を増やすことでロードを高速化できますが、同時にロード中のメモリ使用量のピークが増加します。これは、リソースがGPUに展開される前に、より多くのリソースをメモリにロードできるためです。
|
|
||
|
|||
値 |
|
||
|
# Sets the maximum number of resources processed by the loading
# threads to the number of loading threads + 1. This is the default value.
MaxPendingResources = 0
# Sets the maximum number of resources processed by the loading
# threads to 20 resources.
MaxPendingResources = 20
|
||
// Sets the maximum number of resources processed by the loading
// threads to the number of loading threads + 1. This is the default value.
configuration.maxPendingResources = 0;
// Sets the maximum number of resources processed by the loading
// threads to 20 resources.
configuration.maxPendingResources = 20;
|
パフォーマンス¶
ApplicationIdleState¶
Kanzi は、入力、タスク、タイマー、アニメーションがない場合、またはアプリケーション内でレンダリングを更新するものが何もない場合にメインループを一時停止します。
アプリケーションアイドル状態 を参照してください。
アプリケーションアイドル状態を使用するときには、次の点を考慮してください:
Kanzi アプリケーションがアニメーションを表示している場合、Kanzi はデフォルトでCPUを最大FPSにスロットルします。アニメーションがない場合、Kanzi はアプリケーションをアイドル状態に設定します。このため、CPUと電力を節約するために、Kanzi はデフォルトで最大フレームレートを1秒あたり60フレームに制限します。アプリケーションの設定を使用して、アプリケーションの最大フレームレートを設定してください。
MaximumFPS を参照してください。
アプリケーションがメインループ
UserStageに追加した機能のように、メインループタスクを継続的に実行することに依存している場合は、アイドル状態を無効にしてください。アプリケーションがアイドル状態で、アプリケーションがレンダーパスツリーに変更を加えた場合、Kanzi は変更をレンダリングするためのレンダリングをトリガーしません。このような場合に変更をレンダリングするには、任意のノードで
Node::invalidateDraw関数を呼び出して手動でレンダリングをトリガーする必要があります。
|
|
||||
|
|||||
値 |
|
||||
|
# Disables the application idle state.
ApplicationIdleState = 0
|
||||
// Disables the application idle state.
configuration.applicationIdleStateEnabled = 0;
|
MaximumFPS¶
1 秒間にレンダリングされるフレーム数を制限するには、最大フレームレートを設定できます。
Kanzi アプリケーションがアニメーションを表示している場合、Kanzi はデフォルトでCPUを最大FPSにスロットルします。アニメーションがない場合、Kanzi はアプリケーションをアイドル状態に設定します。このため、CPUと電力を節約するために、Kanzi はデフォルトで最大フレームレートを1秒あたり60フレームに制限します。アプリケーションの設定を使用して、アプリケーションの最大フレームレートを設定してください。
PerformanceInfoLevel を参照してください。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Sets the maximum application frame rate to 32 frames per second.
MaximumFPS = 32
# Disables the limit.
MaximumFPS = 0
|
||
// Sets the maximum application frame rate to 32 frames per second.
configuration.frameRateLimit = 32;
// Disables the limit.
configuration.frameRateLimit = 0;
|
PerformanceInfoLevel¶
Kanzi アプリケーションのパフォーマンス情報を示す Performance HUD の表示を有効にすることができます。Performance HUD を使用すると、ターゲットデバイスでのアプリケーションのパフォーマンスを確認したり、パフォーマンスのボトルネックを見つけたりできます。
Performance HUD には、Kanzi アプリケーションに関する以下のパフォーマンス情報が示されます。
FPS には、1 秒間にレンダリングされるフレーム数が示されます。
Last Frame は、最後のフレームの情報を次のように表示します。
Main Loop Counter は、Kanzi メインループが実行された回数を示します。
Time には、フレームのレンダリングにかかった時間 (ミリ秒単位) が示されます。
Draw Count には、実行された個別の描画呼び出しの回数が表示されます。
Triangle Count には、1 フレーム中に描画された個別の三角形の推定合計数が表示されます。
Pipeline Count には、最新フレームで新しいレンダーパイプラインがバインドされた回数が表示されます。シェーダースイッチの削減 を参照してください。
Pass Count には、最新フレームで使用されたレンダーパスの数が表示されます。レンダリングのベストプラクティス を参照してください。
Memory Upload には、最新フレームで使用されたローリングステージングメモリのバイト数と、バッファの合計サイズが表示されます。ステージングメモリには、ユニフォームデータと、頂点バッファやテクスチャなどの GPU リソースの更新に使用される一時ストレージが含まれます。プラットフォームによっては、データのタイプごとに個別のバッファが使用されます。
Dispatch Count には、最新フレームで使用されたコンピュートディスパッチの数が表示されます。
Timeline Clock には、アプリケーションですべてのアニメーションを実行するのにかかった時間 (ミリ秒単位) が示されます。
Resource Memory Use は、Kanzi アプリケーションが使用するローカルGPUメモリ(VRAM)と非ローカルGPUメモリ(RAM)の推定量を表示します。
Performance HUD が Kanzi Studio Preview に表示する値と、ターゲットデバイスで Kanzi アプリケーションを実行したときに表示される値が異なるのは、Kanzi Studio がアプリケーション内のすべてのリソースをロードしてメモリに保持するためです。
Timer subscriptions には、
MessageDispatcher内の登録済みタイマーハンドラの数が示されます。タイマーハンドラが多すぎると、アプリケーションのパフォーマンスが低下する可能性があります。Kanzi Engine API で
getSubscriptionCount()を呼び出すことにより、タイマーサブスクリプションの数にアクセスできます。Animations には、Kanzi アプリケーション内のアクティブなアニメーションの数とアニメーションの総数が示されます。
Kanzi Engine APIでアニメーションの数にアクセスできます。
アクティブなアニメーションの数を取得するには、
getActiveTimelinePlaybackCount()を使用します。すべてのアニメーションの数を取得するには、
getTimelinePlaybackCount()を使用します。
Kanzi アプリケーションのウィンドウ内での Performance HUD の位置を設定できます。PerformanceInfoPosition を参照してください。
ベストプラクティス を参照してください。
|
|
||
|
|||
値 |
|
||
|
# Enables the full Performance HUD in a Kanzi application.
PerformanceInfoLevel = 2
|
||
// Enables the full Performance HUD in a Kanzi application.
configuration.performanceInfoLevel = ApplicationProperties::PerformanceInfoLevelFull;
|
PerformanceInfoPosition¶
Kanzi アプリケーションのウィンドウ内での Performance HUD の位置を設定できます。Kanzi アプリケーションのウィンドウに Performance HUD を表示するには、それを有効にする必要があります。PerformanceInfoLevel を参照してください。
|
|
||||
|
|||||
バリュー (Value) |
|
||||
|
# Position the Performance HUD 100 pixels from the left side and
# 20 pixels from the top of the Kanzi application window.
PerformanceInfoPositionX = 100
PerformanceInfoPositionY = 20
|
||||
// Position the Performance HUD 100 pixels from the left side and
// 20 pixels from the top of the Kanzi application window.
configuration.performanceInfoProperties.positionX = 100;
configuration.performanceInfoProperties.positionY = 20;
|
PerformanceInfoFontSize¶
Performance HUD のフォントサイズを設定できます。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# The font size of the Performance HUD is 20
PerformanceInfoFontSize = 20
|
||
// The font size of the Performance HUD is 20
configuration.performanceInfoProperties.fontSize = 20;
|
PerformanceInfoGraphFilter¶
Performance HUD にグラフとして表示するメインループタスクを選択できます。デフォルトのメインループタスクの名前については、application.hpp の Application::initializeMainLoopTasks() の実装を参照してください。Kanzi アプリケーションのウィンドウに Performance HUD を表示するには、これを有効にする必要があります。PerformanceInfoLevel を参照してください。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Enables graphs for tasks Render and MyCustomTask.
PerformanceInfoGraphFilter="Render;MyCustomTask"
|
||
// Enables graphs for tasks Render and MyCustomTask.
configuration.performanceInfoProperties.graphFilter="Render;MyCustomTask"
|
ProfilingCategoryFilter¶
パフォーマンスプロファイラーのグループ化に使用するパフォーマンスプロファイリングカテゴリの状態を制御できます。アプリケーションパフォーマンスの測定 と リソースの読み込みとデプロイ時間の測定 を参照してください。
|
|
||||||||
|
|||||||||
値 |
リストに含めるカテゴリと状態のペアでは、各ペアをセミコロン (;) で区切ります。 |
||||||||
|
# Enables the MyProfiler category and disables the MainLoopRendering category.
ProfilingCategoryFilter="MyProfiler=on;MainLoopRendering=off"
# Enables all performance profiling categories.
ProfilingCategoryFilter="*=on"
# Enables categories Generic and MyProfilingCategory.
ProfilingCategoryFilter="Generic|MyProfilingCategory=on"
# Enables resource profiling.
ProfilingCategoryFilter="ResourceLoading=on"
|
||||||||
# Enables the MyProfiler category and disables the MainLoopRendering category.
configuration.profilingCategoryFilter="MyProfiler=on;MainLoopRendering=off"
// Enables all performance profiling categories.
configuration.profilingCategoryFilter = "*=on";
// Enables categories Generic and MyProfilingCategory.
configuration.profilingCategoryFilter = "Generic|MyProfilingCategory=on";
// Enables resource profiling.
configuration.profilingCategoryFilter = "ResourceLoading=on";
|
この表は、Profiling build に含まれる Kanzi のスタートアップパフォーマンスプロファイリングカテゴリとプロファイラを一覧にしています。
カテゴリ (Category) |
設定名 |
プロファイラ |
|---|---|---|
アプリケーション初期化 |
|
|
デフォルトのリソース登録 |
|
|
グラフィックスの初期化 |
|
|
スタートアップ kzb ファイルオープン |
|
|
ロードスレッド初期化 |
|
|
メタデータ登録 |
|
|
プラグインロード |
|
|
プレハブロード |
|
|
プレハブインスタンス化 |
|
|
プレハブ添付 |
|
|
レンダラーリセット |
|
|
ランタイムアセット登録 |
|
|
ドメイン初期化 |
|
|
|
||
|
||
|
MainLoopProfilingSampleBufferCount¶
Profiling build に含まれるメインループパフォーマンスプロファイラのサンプルバッファサイズを設定できます。Kanzi Engine のパフォーマンスを測定する と ProfilingCategoryFilter を参照してください。
|
|
||
|
|||
値 |
|
||
|
# Sets the maximum number of samples in main loop performance profilers
# to 3600.
MainLoopProfilingSampleBufferCount = 3600
|
||
// Sets the maximum number of samples in main loop performance profilers
// to 3600.
configuration.mainLoopProfilingSampleBufferCount = 3600;
|
トレーシング¶
TracingSampleMaxMemory¶
トレースシステムがトレースデータの保存に使用するメモリ量を制御できます。値を大きくすると、上書きされるまでにより多くのサンプルを保存できます。
リリースビルドではトレースは無効です。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Sets the Tracing system to use 8MB.
TracingSampleMaxMemory = 8388608
|
||
// Sets the Tracing system to use 8MB.
configuration.tracingConfiguration.sampleMaxMemory = 8388608;
|
TracingStartupInterval¶
スタートアップインターバルを設定すると、起動時にトレースファイルを現在の作業ディレクトリに自動的に書き込むことができます。このオプションは、アプリケーションの起動パフォーマンスを記録するのに便利な方法です。
リリースビルドではトレースは無効です。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Triggers a startup trace after 5 seconds.
TracingStartupInterval = 5000
# Disables writing a startup trace.
TracingStartupInterval = 0
|
||
// Triggers a startup trace after 5 seconds.
configuration.tracingConfiguration.startupInterval = chrono::milliseconds{ 5000 };
// Disables writing a startup trace.
configuration.tracingConfiguration.startupInterval = chrono::milliseconds{ 0 };
|
TracingTimeInterval¶
スタートアップトレースの書き込み後に Kanzi がトレースファイルを繰り返し書き込む時間間隔を設定できます。間隔が経過するたびに、Kanzi は現在の作業ディレクトリにトレースファイルを書き込み、以前のトレースファイルを上書きします。
リリースビルドではトレースは無効です。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Triggers a recurring trace every 5 seconds.
TracingTimeInterval = 5000
# Disables writing a recurring trace.
TracingTimeInterval = 0
|
||
// Triggers a recurring trace every 5 seconds.
configuration.tracingConfiguration.recurringTimeInterval = chrono::milliseconds{ 5000 };
// Disables writing a recurring trace.
configuration.tracingConfiguration.recurringTimeInterval = chrono::milliseconds{ 0 };
|
TracingFrameInterval¶
スタートアップトレースの書き込み後に Kanzi がトレースファイルを繰り返し書き込むフレーム間隔を設定できます。間隔が経過するたびに、Kanzi は現在の作業ディレクトリにトレースファイルを書き込み、以前のトレースファイルを上書きします。
TracingFrameInterval オプションを有効にするには、TracingTimeInterval を無効にする必要があります。
リリースビルドではトレースは無効です。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Triggers a recurring trace every 1000 frames.
TracingFrameInterval = 1000
# Disables writing a recurring trace.
TracingFrameInterval = 0
|
||
// Triggers a recurring trace every 1000 frames.
configuration.tracingConfiguration.recurringFrameInterval = 1000;
// Disables writing a recurring trace.
configuration.tracingConfiguration.recurringFrameInterval = 0;
|
グリフキャッシュテクスチャのサイズ¶
Text Block を使用する場合、Kanzi はフォントとフォントサイズの組み合わせごとにグリフキャッシュテクスチャを作成します。グリフキャッシュテクスチャがいっぱいになったとき、または Kanzi アプリケーションのパフォーマンスを最適化するために、グリフキャッシュテクスチャのサイズを調整するために、高さと幅を設定できます。
大きなグリフキャッシュテクスチャはより多くのVRAMを使用するため、最終的なサイズを設定する前に異なるサイズを試してください。グリフキャッシュテクスチャサイズの上限はGPUに依存しますが、通常は2048ピクセル×2048ピクセルです。グリフキャッシュテクスチャのデフォルトサイズは512ピクセル×512ピクセルです。
Kanzi は、すべてのグリフキャッシュテクスチャにグリフキャッシュテクスチャのサイズを適用します。
CBDT テーブルを持つカラーフォントなどのスケーラブルでないフォントには、比較的高い解像度のスケーラブルでないグリフデータが含まれるため、Kanzi では、そのようなフォントのグリフキャッシュのサイズを設定するための別のオプションセットが用意されています。スケーラブルでないフォントの場合、グリフキャッシュテクスチャのデフォルトサイズは 768 x 768 ピクセルです。
|
|
||
|
|||
値 |
|
||
|
# Sets the glyph cache texture height to 768, and width to 1024 pixels.
GlyphCacheHeight = 768
GlyphCacheWidth = 1024
# Sets the glyph cache texture height to 1024, and width to 1280 pixels for non-scalable fonts.
GlyphCacheNonScalableHeight = 1024
GlyphCacheNonScalableWidth = 1280
|
||
// Sets the glyph cache texture height to 768, and width to 1024 pixels.
configuration.glyphCacheHeight = 768;
configuration.glyphCacheWidth = 1024;
// Sets the glyph cache texture height to 1024, and width to 1280 pixels for non-scalable fonts.
configuration.glyphCacheNonScalableHeight = 1024;
configuration.glyphCacheNonScalableWidth = 1280;
|
最適化¶
InitializePlatform¶
integrity_rcar_rwm_aarch64プラットフォームでは、アプリケーションのグラフィックスを初期化するかどうかを設定できます。このアプローチは、同時に初期化される複数のアプリケーションの開始を手動で同期したい場合に、最終段階の最適化としてのみ使用してください。
この構成は、グラフィックスドライバとデバイスウィンドウマネージャの初期化を制御し、ディスプレイをオンにするかどうかを制御します。この構成を無効にした場合、Kanzi アプリケーションがウィンドウを作成できるようにするために、同じプロセスで次を初期化する必要があります。
PVRGrfxServerInit()R_WM_DevInit()(オプション)
R_WM_DevInfoGet()(オプション)
R_WM_ScreenBgColorSet()R_WM_ScreenEnable()アプリケーションウィンドウの幅と高さを明示的に設定します。アプリケーションウィンドウの位置とサイズ を参照してください。
この構成を使ってグラフィックスの初期化を無効にする場合、設定が無効になるアプリケーションごとに個別にグラフィックスを初期化する必要があります。
|
|
||||
|
|||||
値 |
|
||||
|
# Disables the graphics initialization.
InitializePlatform = 0
|
||||
// Disables the graphics initialization.
configuration.defaultWindowProperties.initializePlatform = 0;
|
MmapMode¶
対応しているオペレーティングシステムでは、Kanzi がシステムにファイルをメモリマップする方法を指示する設定が可能です。
レイジーマッピングは、ファイルのその部分をマッピングする前に、Kanzi アプリケーションがファイルの内容にアクセスするのを待ちます。
イージャーマッピングは、ファイル全体を即座にマッピングします。
アプリケーションの動作は、2つの戦略の間で同一ですが、ファイルをマッピングする際のランタイムコストを支払うタイミングを選択できます。
デフォルトで、Kanzi はシステムのデフォルトのメモリマッピング戦略を使用します。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Uses lazy memory mapping.
MmapMode = lazy
|
||
// Uses lazy memory mapping.
configuration.mmapMode = MmapMode::Lazy;
|
GPU リソース (GPU resources)¶
HandleGPUResources¶
Kanzi アプリケーションが一時停止状態 (MainLoopState::Paused) で kzb ファイルに保存されていない GPU リソースをどのように処理するかを設定できます。
|
|
||
|
|||
値 |
|
||
|
# Invalidates the GPU resources.
HandleGPUResources = invalidate
|
||
// Invalidates the GPU resources.
configuration.handleGPUResources = ApplicationProperties::HandleGPUResources::Invalidate;
|
グラフィックスパフォーマンスのロギング¶
LogOpenGLExtensions¶
Kanzi を有効にすると、アプリケーションの起動時にグラフィック関連の拡張機能のリストをデバッグコンソールに出力できます。
|
|
||||
|
|||||
値 |
|
||||
|
# Enables the logging of the graphics-related extensions.
LogOpenGLExtensions = 1
|
||||
// Enables the logging of the graphics-related extensions.
configuration.extensionOutputEnabled = 1;
|
LogOpenGLInformation¶
Kanzi を有効にすると、アプリケーションの起動時にこのグラフィックス関連情報をデバッグコンソールに出力できます。
GL ベンダー (GL Vendor)
GL レンダラー (GL Renderer)
GL バージョン (GL Version)
Shading 言語のバージョン (Shading Language Version)
|
|
||||
|
|||||
値 |
|
||||
|
# Enables the logging of the graphics-related information.
LogOpenGLInformation = 1
|
||||
// Enables the logging of the graphics-related information.
configuration.informationOutputEnabled = 1;
|
LogSurfaceInformation¶
Kanzi を有効にすると、アプリケーションの起動時にこれらのグラフィックス関連プロパティをデバッグコンソールに出力できます。
リクエストされたおよび取得されたサーフェスプロパティ。サーフェスのプロパティ を参照してください。
デスクトップ全体および各ディスプレイのサイズ。
アプリケーションウィンドウのサイズ。アプリケーションウィンドウの位置とサイズ を参照してください。
|
|
||||
|
|||||
値 |
|
||||
|
# Enables the logging of the graphics-related properties.
LogSurfaceInformation = 1
|
||||
// Enables the logging of the graphics-related properties.
configuration.propertyOutputEnabled = 1;
|
QNXシステムロガー (slogger2)¶
QNXでは、QNXシステムロガー (slogger2) を使用してログメッセージを書くことができます。ログメッセージをslogger2にリダイレクトすると、Kanzi アプリケーションはデフォルトのロガーにログメッセージを書き続けます。
Kanzi アプリケーションはデフォルトのslogger2バッファを使用しないため、slog2_set_default_buffer を使用することができます。Kanzi は、1つのslogger2バッファへのログ記録のみをサポートするslogger2を提供します。slogger2がログ記録を停止すると、Kanzi は slog2_reset を呼び出します。この動作を変更するには、slogger2の後処理を行う を参照してください。
Kanzi が Kanzi アプリケーションの設定を読み込んだ後にslogger2が初期化されることに注意してください。このため、それ以前のログメッセージはslogger2のログに含まれません。
slogger2を使用するには、次のいずれかを行います。
application.cfgまたはApplication::onConfigureで slogger2 を構成します。Kanzi ロガーにカスタムのslogger2バッファを提供します。customSlog2Buffer を参照してください。
QnxEnableSlogger2¶
Kanzi アプリケーションで slogger2 を使用する前に、有効にする必要があります。
|
|
||||
|
|||||
値 |
|
||||
|
# Enable logging to slogger2.
QnxEnableSlogger2 = true
|
||||
// Enable logging to slogger2.
configuration.slog2Config.enabled = true;
|
QnxSlogger2VerbosityLevel¶
どのログメッセージをslogger2に記録させるかを設定できます。Kanzi アプリケーションの構成の詳細度レベルは、slogger2のログ詳細度レベルにマップされます。
|
|
||||||||||||||||
|
|||||||||||||||||
値 |
|
||||||||||||||||
|
# Sets the slogger2 log level to SLOG2_INFO.
QnxSlogger2VerbosityLevel = Slog2Info
|
||||||||||||||||
// Sets the slogger2 log level to SLOG2_INFO.
configuration.slog2Config.verbosityLevel = Slog2VerbosityLevel::Slog2Info;
|
QnxSlogger2MaxRetries¶
QNXバージョン7.0.4以降では、slogger2がバッファを取得するためにリトライする回数を制限できます。
この制限を設定し、slogger2がそれに達すると、Kanzi はログメッセージを削除し、削除されたメッセージの数を増やします。削除されていない次のログエントリで、ログメッセージの前に書かれた変数 code のslogger2ログにおいて、削除されたメッセージの数を確認できます。
|
|
||
|
|||
値 |
|
||
|
# Set the retry limit to 10 retries.
QnxSlogger2MaxRetries = 10
|
||
// Set the retry limit to 10 retries.
configuration.slog2Config.maxRetries = 10;
|
pageCount¶
QNXロガーが内部のslogger2バッファ用に取得する4KBページの倍数を設定できます。
|
|||
値 |
|
||
// For example, when you set the slogger2 verbosity level to
// SLOG2_ERROR slogger2 writes to log less frequently
// (low rate logging), and by decreasing the page count
// you can increase the logging pace.
configuration.slog2Config.pageCount = 1;
|
customSlog2Buffer¶
Kanzi を使用すると、カスタムのslogger2バッファを登録し、それを Kanzi アプリケーションに渡すことができます。次に、Kanzi アプリケーションはそのバッファを使用してログを書き込みます。例えば、バッファにカスタム名を付けたい場合や、slog2_register に渡される slog2_buffer_set_config_t 構造体のプロパティを設定したい場合に、カスタムのslogger2バッファを登録することができます。QNXシステムロガー (slogger2) を参照してください。
グラフィックスライブラリ¶
Windows オペレーティングシステムでは、OpenGL ES、OpenGL、Vulkan のどれを使用するかを、Application::onConfigure 関数、application.cfg、またはコマンドラインアーギュメント (ターゲットがコマンドラインアーギュメントをサポートしている場合) で選択できます。
コマンドラインでは、以下を使用します。
OpenGL ES を使用する場合は
--glesまたは--openglesOpenGL を使用する場合は
--glまたは--openglVulkan を使用する場合は
--vkまたは--vulkanEGL を使用する場合は
--eglWGL を使用する場合は
--wglGLX を使用する場合は
--glx
|
|
||||
|
|||||
値 |
|
||||
|
# Sets the surface target for OpenGL rendering and WGL graphics context.
SurfaceClientAPI = gl
GraphicsContextAPI = wgl
|
||||
// Sets the surface target for OpenGL rendering and WGL graphics context.
configuration.defaultSurfaceProperties.clientAPI = SurfaceClientAPI::OpenGL;
configuration.defaultSurfaceProperties.contextAPI = GraphicsContextAPI::WGL;
|
GraphicsStatisticEnabled¶
アプリケーションの Kanzi グラフィックスライブラリの統計レイヤーを有効にできます。デバッグモードでは、設定に関係なく統計レイヤーが常に有効になります。統計レイヤーは、Kanzi グラフィックスオブジェクトに関する情報を Performance HUD に表示します。Performance HUD でパフォーマンス測定グラフを表示する を参照してください。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Enables the statistics layer for the Kanzi graphics library.
GraphicsStatisticsEnabled = 1
|
||
// Enables the statistics layer for the Kanzi graphics library.
configuration.graphicsStatisticsEnabled = 1;
|
|||
コマンドライン例 |
Kanzi グラフィックスライブラリの統計レイヤーを有効にします。 --graphics-statistics
|
GraphicsValidationEnabled¶
アプリケーションの Kanzi グラフィックスライブラリの検証レイヤーを有効にできます。デバッグモードでは、設定にかかわらず検証レイヤーは常に有効です。検証レイヤーの情報を使用して、アプリケーションがグラフィックス API を正しく使用しているかどうかを確認します。Kanzi は検証エラーをデフォルトのコンソールに表示します。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Enables the validation layer for the Kanzi graphics library.
GraphicsValidationEnabled = 1
|
||
// Enables the validation layer for the Kanzi graphics library.
configuration.graphicsValidationEnabled = 1;
|
|||
コマンドライン例 |
Kanzi グラフィックスライブラリの検証レイヤーを有効にします。 --graphics-validation
|
サーフェスのプロパティ¶
サーフェスのプロパティは、Kanzi がレンダリングされるハードウェアアクセラレーションされたグラフィックスサーフェスのプロパティを制御します。これらは、画像品質とレンダリング速度の関係を制御します。
設定したサーフェスプロパティはリクエストと見なされ、ターゲットハードウェアのグラフィックスシステムでそれが照合されます。特定のリクエストが上限、下限、または正確な値と見なされるかどうかは、プラットフォームに依存します。
サーフェスプロパティのプラットフォーム依存のデフォルト値を取得するには、kzsSurfaceGetDefaultProperties() を呼び出します。
カラーフォーマット (Color format)¶
RGB色チャンネルとアルファチャンネルのサイズをビット単位で設定できます。
|
|
||||||||
|
|||||||||
値 |
各チャンネルのデフォルトサイズは 8 ビットです。 プラットフォームに値を選ばせるには、 |
||||||||
|
# Set the sizes of the color and alpha channels for a typical
# high-speed rendering application.
SurfaceBitsRed = 5
SurfaceBitsGreen = 6
SurfaceBitsBlue = 5
SurfaceBitsAlpha = 0
# Let the platform choose the sizes of the color and alpha channels.
SurfaceBitsRed = "unspecified"
SurfaceBitsGreen = "unspecified"
SurfaceBitsBlue = "unspecified"
SurfaceBitsAlpha = "unspecified"
|
||||||||
// Set the sizes of the color and alpha channels for a typical
// high-speed rendering application.
configuration.defaultSurfaceProperties.bitsColorR = 5;
configuration.defaultSurfaceProperties.bitsColorG = 6;
configuration.defaultSurfaceProperties.bitsColorB = 5;
configuration.defaultSurfaceProperties.bitsAlpha = 0;
プラットフォームに色とアルファチャンネルのサイズを選択させるには:
|
SurfaceBitsStencil¶
ステンシルバッファのサイズをビット単位で設定できます。
|
|
||
|
|||
値 |
|
||
|
# Set the size of the stencil buffer to one bit.
SurfaceBitsStencil = 1
# Let the platform choose the size of the stencil buffer.
SurfaceBitsStencil = "unspecified"
|
||
// Set the size of the stencil buffer to one bit.
configuration.defaultSurfaceProperties.bitsStencil = 1;
プラットフォームにステンシルバッファのサイズを選択させるには、
|
SurfaceBitsDepthBuffer¶
深度バッファのサイズをビット単位で設定できます。
|
|
||
|
|||
値 |
|
||
|
# Set the size of the depth buffer to 16 bits.
SurfaceBitsDepthBuffer = 16
# Let the platform choose the size of the depth buffer.
SurfaceBitsDepthBuffer = "unspecified"
|
||
// Set the size of the depth buffer to 16 bits.
configuration.defaultSurfaceProperties.bitsDepthBuffer = 16;
プラットフォームにデプスバッファのサイズを選択させるには:
|
SurfaceBitsPadding¶
QNX では、Kanzi アプリケーションウィンドウのカラーフォーマットに追加するパディングのサイズ (ビット単位) を設定できます。
|
|
||
|
|||
値 |
|
||
|
# Set the size of the padding to 2 bits.
SurfaceBitsPadding = 2
|
||
// Set the size of the padding to 2 bits.
configuration.defaultSurfaceProperties.bitsPadding = 2;
|
SurfaceColorSpace¶
Kanzi アプリケーションを表示するハードウェアに対して OpenGL の初期化を有効にできます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Set your application to use an unspecified color space.
SurfaceColorSpace = "standard"
|
||
// Set your application to use an unspecified color space.
configuration.defaultSurfaceProperties.colorSpace = "standard";
|
|||
コマンドライン例 |
アプリケーションを未指定のカラースペースを使用するように設定します。 -surface-color-space=standard
|
カラーワークフロー を参照してください。
SurfaceSamplesAntialiasing¶
アンチエイリアス処理に使用するサンプル数を設定できます。
|
|
||
|
|||
値 |
|
||
|
# Set the number of anti-aliasing samples to 4.
SurfaceSamplesAntialiasing = 4
|
||
// Set the number of anti-aliasing samples to 4.
configuration.defaultSurfaceProperties.antiAliasing = 4;
|
SwapBehavior¶
バッファスワップ時にバッファをスワップするかコピーするかを設定できます。
|
|
||
|
|||
値 |
|
||
|
# Copy buffers during buffer swap.
SwapBehavior = "copy"
|
||
// Copy buffers during buffer swap.
configuration.defaultSurfaceProperties.swapBehaviorCopy = SwapBehavior::Copy;
|
PresentMode¶
サーフェスのプレゼントモードを設定できます。この設定はすべてのプラットフォームでサポートされているわけではありません。
|
|
||
|
|||
値 |
|
||
|
# Swap buffers at any time.
PresentMode = immediate
|
||
// Swap buffers at any time.
configuration.defaultSurfaceProperties.presentMode = kanzi::platform::PresentMode::Immediate;
|
EGLIMGContextPriority¶
優先度のヒントを使用してEGL IMGコンテキストを作成できます。デフォルトで、Kanzi はプラットフォームに優先度を選択させます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Set the EGL IMG context priority to high.
EGLIMGContextPriority = "high"
# Let the platform choose the EGL IMG context priority.
EGLIMGContextPriority = "unspecified"
|
||
// Set the EGL IMG context priority to high.
configuration.defaultSurfaceProperties.priority = EGLIMGContextPriority::High;
プラットフォームにEGL IMGコンテキストの優先順位を選択させるには:
|
|||
コマンドライン例 |
EGL IMG コンテキストの優先度をハイに設定します。 -egl-img-context-priority=high
|
アプリケーションウィンドウの位置とサイズ¶
Kanzi アプリケーションの位置を、画面の左上隅を基準に設定し、アプリケーションウィンドウのサイズをピクセル単位で指定できます。ウィンドウのデフォルトのサイズは640x480ピクセルで、デバイス画面の中央に配置されます。
アプリケーションウィンドウを固定サイズにする場合、サイズ変更可能にする場合、全画面表示する場合、または境界線なしで表示する場合は、WindowStyle を参照してください。
アプリケーションウィンドウが表示されるデフォルトのディスプレイを設定するには、DefaultDisplayIndex を参照してください。
|
|
||||||||||
|
|||||||||||
バリュー (Value) |
|
||||||||||
|
# Sets the width to 1280 and height to 720 pixels and place it 100 pixels
# from the top and 1 pixel from the left side of the device screen.
WindowWidth = 1280
WindowHeight = 720
WindowX = 100
WindowY = 1
# Places the application window in the top-left corner of the device screen.
WindowX = 0
WindowY = 0
# Sets the window order to 0.
WindowOrder = 0
# Sets the window order to 0xff.
WindowOrder = 0xff
|
||||||||||
// Sets the width to 1280 and height to 720 pixels and place it 100 pixels
// from the top and 1 pixel from the left side of the device screen.
configuration.defaultWindowProperties.width = 1280;
configuration.defaultWindowProperties.height = 720;
configuration.defaultWindowProperties.x = 100;
configuration.defaultWindowProperties.y = 1;
// Places the application window in the top-left corner of the device screen.
configuration.defaultWindowProperties.x = 0;
configuration.defaultWindowProperties.y = 0;
// Sets the window order to 0.
configuration.defaultWindowProperties.order = 0;
configuration.systemConfiguration[ConfigurationKeyDefaultWindowOrder] = "0";
// Sets the window order to 0xff.
configuration.defaultWindowProperties.order = 0xff;
configuration.systemConfiguration[ConfigurationKeyDefaultWindowOrder] = "0xff";
|
WindowClassName¶
QNX および Win32 プラットフォームでは、ウィンドウクラス名を設定できます。
|
|
レガシーグラフィックス出力の場合。
新しいグラフィックス出力の場合。
|
|
コマンドラインで |
|
|
# Sets the window class name to "kanzi" for the legacy and new graphics outputs.
WindowClassName = "kanzi"
|
// Sets the window class name to "kanzi" for the legacy graphics output.
configuration.defaultWindowProperties.groupName = "kanzi";
// Sets the window class name for the new graphics output.
configuration.systemConfiguration[ConfigurationKeyDefaultWindowClassName] = "kanzi";
|
|
コマンドライン例 |
レガシーグラフィックス出力と新しいグラフィックス出力の両方で、ウィンドウクラス名を -window-class-name="kanzi"
|
ウィンドウタイトル¶
Kanzi のウィンドウタイトルを設定できます。デフォルトのウィンドウタイトルは "Kanzi" です。
|
|
|
|
コマンドラインで |
|
|
# Sets "kanzi" as window title.
WíndowTitle = kanzi
|
// Sets "kanzi" as window title.
configuration.systemConfiguration[ConfigurationKeyDefaultWindowTitle] = "kanzi";
|
|
コマンドライン例 |
ウィンドウタイトルとして "kanzi" を設定します。 -window-title=kanzi
|
グラフィックスカードの選択¶
DeviceIdentifier¶
GBM ウィンドウシステムを使用するプラットフォームでは、Kanzi アプリケーションで使用するグラフィックスカードを設定できます。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Sets Kanzi to use the graphics card at /dev/dri/card1.
DeviceIdentifier = /dev/dri/card1
|
||
// Sets Kanzi to use the graphics card at /dev/dri/card1.
configuration.defaultDesktopProperties.deviceIdentifier = "/dev/dri/card1";
|
優先する Vulkan GPU¶
複数の GPU が利用可能な場合に、Kanzi の Vulkan バックエンドが使用するデバイスを選択する際に優先する GPU のタイプを設定できます。デフォルトでは、Kanzi は最初に列挙された GPU を使用します。
|
|
||
|
|||
値 |
|
||
|
# Prefer integrated GPU.
PreferredGPU = integrated
|
||
// Prefer integrated GPU.
configuration.preferredGPU = gfx::GpuSelectionType::Integrated;
|
QNX コンテキストタイプの選択¶
QNX では、Kanzi アプリケーションで使用するコンテキストタイプを設定できます。application.cfg およびコマンドラインでは、コンテキストタイプを 1 つだけ設定できます。複数のコンテキストタイプを設定するには、Application::onConfigure で設定します。
|
|
||
|
|||
コマンドラインで |
|
||
バリュー (Value) |
|
||
|
# Sets Kanzi to use the SCREEN_DISPLAY_MANAGER_CONTEXT context type.
QnxContextType = SCREEN_DISPLAY_MANAGER_CONTEXT
|
||
// Sets Kanzi to use the SCREEN_WINDOW_MANAGER_CONTEXT and SCREEN_INPUT_PROVIDER_CONTEXT context types.
configuration.defaultDesktopProperties.contextFlags = SCREEN_WINDOW_MANAGER_CONTEXT | SCREEN_INPUT_PROVIDER_CONTEXT;
|
|||
コマンドライン例 |
SCREEN_DISPLAY_MANAGER_CONTEXT コンテキストタイプを使用するように Kanzi を設定します。 -qnx-context-type=SCREEN_DISPLAY_MANAGER_CONTEXT
|
アプリケーションウィンドウの構成¶
WindowStyle¶
Kanzi アプリケーションウィンドウのスタイルを設定できます。ユーザーがサイズを変更できる境界線付きのデフォルトのウィンドウに加えて、Kanzi アプリケーションを境界線のないウィンドウ、固定サイズのウィンドウ、またはデバイス画面全体を占有するウィンドウで起動するように設定できます。
アプリケーションウィンドウの位置とサイズを設定するには、アプリケーションウィンドウの位置とサイズ を参照してください。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Launch the application in a window that occupies the whole screen of the device.
WindowStyle = "fullscreen"
|
||
// Launch the application in a window that occupies the whole screen of the device.
configuration.defaultWindowProperties.style = KZS_WINDOW_STYLE_FULL_SCREEN;
|
DefaultDisplayIndex¶
Kanzi アプリケーションをフルスクリーンモードで複数のディスプレイを持つシステム上で実行する場合、Kanzi アプリケーションウィンドウが表示されるデフォルトのディスプレイを設定できます。
アプリケーションウィンドウをフルスクリーンにするには、WindowStyle を参照してください。
この設定オプションは、Kanzi が出力ウィンドウを所有するプラットフォームでのみ使用できます。Android はこれに該当しません。Android で特定のディスプレイに Android Activity を起動するには、setLaunchDisplayId(id) でインテントオプションを設定するか、--display アーギュメントを指定して adb を使用します。https://source.android.com/docs/core/display/multi_display/activity-launch を参照してください。
|
|
||
|
|||
バリュー (Value) |
|
||
|
# Sets the second display as the default display for the full-screen application window.
DefaultDisplayIndex = 1
|
||
// Sets the second display as the default display for the full-screen application window.
configuration.defaultWindowProperties.defaultDisplayIndex = 1;
|
WindowBufferCount¶
ターゲットデバイスのウィンドウ処理システムでウィンドウバッファ数の設定がサポートされている場合、Kanzi アプリケーションウィンドウが使用するネイティブウィンドウバッファの数を設定できます。例えば、ルネサスのウィンドウマネージャーやQNX Screenはウィンドウバッファ数の設定をサポートしています。
|
|
||
|
|||
値 |
|
||
|
# Set the number of native window buffers used by the Kanzi application window to 3.
WindowBufferCount = 3
|
||
// Set the number of native window buffers used by the Kanzi application window to 3.
configuration.defaultWindowProperties.bufferCount = 3;
|
QnxWindowBufferCount¶
QNX プラットフォームで Kanzi アプリケーションウィンドウが使用するネイティブウィンドウバッファの数を設定します。互換性を確保するため、この設定オプションを明示的に設定しない場合、Kanzi は WindowBufferCount 設定オプションの値を使用します。
|
|
||
|
|||
値 |
|
||
|
# Set the number of native window buffers used by the Kanzi application window to 3.
QnxWindowBufferCount = 3
|
||
// Set the number of native window buffers used by the Kanzi application window to 3.
configuration.systemConfiguration[ConfigurationKeyQnxWindowBufferCount] = 3;
|
QnxStreamBufferCount¶
QNX プラットフォームで Kanzi アプリケーションが使用するネイティブストリームバッファの数を設定します。
|
|
||
|
|||
値 |
|
||
|
# Set the number of native stream buffers used by the Kanzi application to 3.
QnxStreamBufferCount = 3
|
||
// Set the number of native stream buffers used by the Kanzi application to 3.
configuration.systemConfiguration[ConfigurationKeyQnxStreamBufferCount] = 3;
|
GroupName¶
QNX など、ウィンドウグループ名を使用するウィンドウシステムを備えたプラットフォームでは、アプリケーションウィンドウグループのグループ名を設定できます。複数の Kanzi アプリケーションを実行する場合は、各 Kanzi アプリケーションでウィンドウグループに一意の名前を設定してください。
|
|||
値 |
|
||
// Set the Kanzi application window group name to Cluster.
configuration.defaultWindowProperties.groupName = "Cluster";
|
QnxPipelineID¶
Kanzi アプリケーションウィンドウの QNX Screen パイプライン ID を設定できます。グラフィックパイプライン ID は、ターゲットデバイスに特有のハードウェアレイヤリングを参照する識別子です。
パイプラインIDを設定すると、Kanzi アプリケーションは基盤となるシステム機能を使用してそのIDを設定します。デフォルトで、Kanzi アプリケーションはパイプラインIDを設定しません。
パイプラインIDを設定する場合、ターゲットデバイスのパイプライン順序とアプリケーションウィンドウのzオーダリングが一緒に意味を成すようにしてください。Kanzi アプリケーションウィンドウのzオーダーは、WindowOrder 設定を使用して設定できます。アプリケーションウィンドウの位置とサイズ を参照してください。
|
|
||
コマンドラインで |
|
||
値 |
|
||
|
# Sets the QNX Screen pipeline ID to 1.
QnxPipelineID = 1
|
||
コマンドライン例 |
QNX Screen パイプライン ID を 1 に設定します。 -qnx-pipeline-id=1
|
QnxWindowSelfLayout¶
QNX プラットフォームで、Kanzi アプリケーションウィンドウに対して QNX Screen プロパティのセルフレイアウトモードを有効にします。有効にすると、通常は QNX ウィンドウマネージャーが管理するウィンドウプロパティをアプリケーション内で制御できます。
|
|
||
|
|||
値 |
|
||
|
# Enables self layout for this QNX window.
QnxWindowSelfLayout = 1
|
||
// Enables self layout for this QNX window.
configuration.systemConfiguration[ConfigurationKeyDefaultQnxWindowSelfLayout] = "1";
|
|||
コマンドライン例 |
この QNX ウィンドウのセルフレイアウトを有効にします。 -qnx-window-self-layout=1
|
QnxUsageFlags¶
Kanzi アプリケーションウィンドウの場合、QNX Screen プロパティの使用フラグをプログラムで設定できます。スクリーン使用フラグを使用すると、割り当てられた QNX ウィンドウバッファを制限することができます。
m_applicationProperties.defaultWindowProperties.usageFlags = usageFlags;
|
|||
値 |
|
||
// To use the OpenGL ES 3.X to render the QNX window buffer.
m_applicationProperties.defaultWindowProperties.usageFlags = SCREEN_USAGE_OPENGL_ES3;
|
EGLGraphicsFormatID¶
Kanzi アプリケーションの EGL グラフィックスフォーマット ID を設定できます。EGL グラフィックスフォーマット ID は、EGL をサポートするプラットフォームで実行される Kanzi アプリケーションの EGL 構成を参照する識別子です。Kanzi アプリケーションで使用可能な EGL 構成を一覧表示するには、コマンドラインを使用します。
EGLグラフィックスフォーマットIDを設定する際には、EGLグラフィックスフォーマット設定を上書きすることに注意してください。
次の EGL グラフィックス出力に対して EGL フォーマット ID を設定できます。
Android WS
Emscripten
Wayland
X11
|
|
||
コマンドラインで |
|
||
値 |
|
||
|
# Sets the EGL graphics format ID to 1.
EGLGraphicsFormatID = 1
|
||
コマンドライン例 |
EGL グラフィックスフォーマット ID を 1 に設定します。 -egl-graphics-format-id=1
アプリケーションで使用可能な EGL コンフィギュレーションを一覧表示します。 -enum-egl-configs
|
EGLContextClientVersion¶
次の EGL グラフィックス出力に対して EGL コンテキストクライアントバージョンを設定できます。
Android WS
Emscripten
Wayland
QNX
X11
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Sets Kanzi to use ES2 context client version.
EGLContextClientVersion = es2
|
||
// Sets Kanzi to use ES2 context client version.
configuration.systemConfiguration[ConfigurationKeyEGLContextClientVersion] = "es2";
|
|||
コマンドライン例 |
ES2 コンテキストクライアントバージョンを使用するように Kanzi を設定します。 -egl-context-client-version=es2
|
入力処理¶
アプリケーションがタッチおよびポインター入力をどのように処理するかを定義できます。デバイスでアプリケーションを実行する際に、デバイスのポインターに反応するか、タッチスクリーンを使用するか、またはその両方を設定できます。また、入力イベント座標の変換行列を設定することもできます。
Kanzi アプリケーションはデフォルトで入力を処理します。アプリケーションでの入力処理を無効にするには、Application::setScreenOverride() 関数を空の実装でオーバーライドしてください。入力処理の無効化 を参照してください。
InputTransform¶
入力イベント座標の変換行列を設定できます。この変換は入力イベント座標にのみ影響し、Kanzi アプリケーション画面の向きには影響しません。例えば、アプリケーション画面に対してタッチスクリーンを回転させるためにこれを使用します。
|
|
||
|
|||
値 |
|
||
|
# Rotate a touch screen sized 1280x720 pixels by 180 degrees.
InputTransform = -1, 0, 0, 0, -1, 0, 1280, 720, 1
|
||
// Rotate a touch screen sized 1280x720 pixels by 180 degrees.
configuration.defaultEventSourceProperties.transformation = Matrix3x3::createTranslation(1280.0f, 720.0f) * Matrix3x3::createRotationInDegrees(180.0f);
|
例では、以下の式を使って変換マトリックスを計算しています。
InputTranslation¶
Kanzi がポインターおよびタッチイベントをどのように変換するかを設定できます。
|
|
||
|
|||
値 |
|
||
|
# Translate pointer events to touch events.
InputTranslation = pointertotouch
|
||
// Translate pointer events to touch events.
configuration.defaultEventSourceProperties.translation = TranslatePointerToTouch;
|
InputDiscardPointer¶
アプリケーションがデバイスのポインタに反応するかどうかを設定できます。
|
|
||||||
|
|||||||
値 |
|
||||||
|
# Ignore pointer input.
InputDiscardPointer = 1
|
||||||
// Ignore pointer input.
configuration.defaultEventSourceProperties.discardPointerEvents = 1;
|
InputDiscardTouch¶
アプリケーションがタッチ入力に反応するかどうかを設定できます。
|
|
||||||
|
|||||||
値 |
|
||||||
|
# Ignore touch input.
InputDiscardTouch = 1
|
||||||
// Ignore touch input.
configuration.defaultEventSourceProperties.discardTouchEvents = 1;
|
Linux 上の入力イベントデバイス¶
Kanzi がリッスンする入力イベントデバイスは、ネイティブウィンドウシステムが入力デバイスの処理を提供しないLinuxポートで設定できます。
この方法で、Kanzi はオペレーティングシステムによって提供される入力イベントデバイスから直接イベントを受け取ることができます。
たとえば、Vivante fbdev および WSEGL ポートでは、Kanzi がリッスンする入力イベントデバイスを構成できます。X11 および Wayland ポートでは、ネイティブウィンドウシステムが入力デバイスを処理します。
Kanzi はデフォルトで、/dev/input ディレクトリ内のeventNという名前のすべての入力イベントデバイスをリッスンします。ここで、Nは整数です。
|
|
||
|
|||
値 |
|
||
|
# Listens to events from one input event device.
InputEventDevice = "/dev/input/event1"
# Listens to events from two input event devices.
InputEventDevice = "/dev/input/event0;/dev/input/event1"
# Disables listening to events from input event devices.
InputEventDevice = "none"
|
||
// Listens to events from one input event device.
configuration.defaultEventSourceProperties.inputEventDevice = "/dev/input/event1";
// Listens to events from two input event devices.
configuration.defaultEventSourceProperties.inputEventDevice = "/dev/input/event0;/dev/input/event1";
// Disables listening to events from input event devices.
configuration.defaultEventSourceProperties.inputEventDevice = "none";
|
プラットフォームコンフィギュレーション¶
PlatformLoggingEnabled¶
プラットフォームレイヤーの追加ログを有効にできます。現在は Wayland と DRM/GBM に影響します。
|
|
||||
|
|||||
コマンドラインで |
|
||||
値 |
|
||||
|
# Sets Kanzi to produce additional logs for the Platform layer.
PlatformLoggingEnabled = true
|
||||
// Sets Kanzi to produce additional logs for the Platform layer.
configuration.systemConfiguration[ConfigurationKeyPlatformLoggingEnabled] = true;
|
|||||
コマンドライン例 |
プラットフォームレイヤーの追加ログを出力するように Kanzi を設定します。 --log-platform
|
Wayland構成¶
Waylandで Kanzi を使用する場合、Wayland固有のパラメータを構成できます。
Waylandシェル¶
Waylandシェル Kanzi が使用するものを設定できます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Sets Kanzi to use the IVI shell.
WaylandShell = ivi
|
||
// Sets Kanzi to use the IVI shell.
configuration.systemConfiguration[ConfigurationKeyWaylandShell] = "ivi";
|
|||
コマンドライン例 |
Kanzi が IVI シェルを使用するように設定します。 -wayland-shell=ivi
|
Wayland入力モード¶
ポインターおよびタッチ frame() イベントを待ちたくない場合は、Kanzi を設定して入力イベントを即座に処理することができます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Enable immediate input mode.
WaylandInputMode = immediate
|
||
// Enable immediate input mode.
configuration.systemConfiguration[ConfigurationKeyWaylandInputMode] = "immediate";
|
|||
コマンドライン例 |
イミディエイト入力モードを有効にします。 -wayland-input-mode=immediate
|
Wayland アプリ ID¶
Kanzi のアプリ ID を設定できます。デフォルトのアプリ ID は "kanzi" です。
|
|
|
|
コマンドラインで |
|
|
# Sets "kanzi" as app ID.
WaylandAppId = kanzi
|
// Sets "kanzi" as app ID.
configuration.systemConfiguration[ConfigurationKeyWaylandAppId] = "kanzi";
|
|
コマンドライン例 |
アプリ ID として "kanzi" を設定します。 -wayland-app-id=kanzi
|
Wayland IVI サーフェス ID¶
Wayland IVIシェルを使用する場合、Kanzi が使用するIVIサーフェスIDを設定できます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Sets IVI surface ID to 4000.
WaylandIviSurfaceId = 4000
|
||
// Sets IVI surface ID to 4000.
configuration.systemConfiguration[ConfigurationKeyWaylandIviSurfaceId] = 4000;
|
|||
コマンドライン例 |
IVI サーフェス ID を 4000 に設定します。 -wayland-ivi-surface-id=4000
|
Wayland IVI 拡張機能の設定¶
COVESA IVI extension を使用し、IVI拡張サポートで Kanzi をビルドした場合、さまざまなIVIパラメータを設定することで Kanzi を制御できます。
Wayland IVI レイヤー ID¶
Kanzi は、そのコンテンツを表示するために専用のIVIレイヤーを必要とします。どのIVIレイヤーを Kanzi が使用するかを設定できます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Sets IVI layer ID to 4000.
WaylandIviLayerId = 4000
|
||
// Sets IVI layer ID to 4000.
configuration.systemConfiguration[ConfigurationKeyWaylandIviLayerId] = 4000;
|
|||
コマンドライン例 |
IVI レイヤー ID を 4000 に設定します。 -wayland-ivi-layer-id=4000
|
Wayland IVI サーフェスの不透明度¶
Kanzi IVIサーフェスの不透明度を設定できます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Sets the IVI surface to be fully transparent.
WaylandIviSurfaceOpacity = 0
|
||
// Sets the IVI surface to be fully transparent.
configuration.systemConfiguration[ConfigurationKeyWaylandIviSurfaceOpacity] = 0;
|
|||
コマンドライン例 |
IVI サーフェスを完全に透明に設定します。 -wayland-ivi-surface-opacity=0
|
Wayland IVI レイヤーの不透明度¶
Kanzi IVIレイヤーの不透明度を設定できます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Sets the IVI layer to be fully transparent.
WaylandIviLayerOpacity = 0
|
||
// Sets the IVI layer to be fully transparent.
configuration.systemConfiguration[ConfigurationKeyWaylandIviLayerOpacity] = 0;
|
|||
コマンドライン例 |
IVI レイヤーを完全に透明に設定します。 -wayland-ivi-layer-opacity=0
|
Wayland IVI サーフェスの可視性¶
Kanzi IVIサーフェスの可視性を設定できます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Hides the Kanzi IVI surface.
WaylandIviSurfaceVisibility = 0
|
||
// Hides the Kanzi IVI surface.
configuration.systemConfiguration[ConfigurationKeyWaylandIviSurfaceVisibility] = 0;
|
|||
コマンドライン例 |
Kanzi IVI サーフェスを非表示にします。 -wayland-ivi-surface-visibility=0
|
Wayland IVI レイヤーの可視性¶
Kanzi IVIレイヤーの可視性を設定できます。
|
|
||
|
|||
コマンドラインで |
|
||
値 |
|
||
|
# Hides the Kanzi IVI layer.
WaylandIviLayerVisibility = 0
|
||
// Hides the Kanzi IVI layer.
configuration.systemConfiguration[ConfigurationKeyWaylandIviLayerVisibility] = 0;
|
|||
コマンドライン例 |
Kanzi IVI レイヤーを非表示にします。 -wayland-ivi-layer-visibility=0
|
イメージロード¶
Kanzi は、libpng や libjpeg などのサードパーティ製画像ライブラリを使用して、さまざまな画像フォーマットをサポートします。Kanzi アプリケーションをより安全にするために、これらのライブラリを使用して画像を読み込む際に使用する Kanzi の制限を設定できます。たとえば、悪意のあるファイルの読み込みを防ぐために、Kanzi が読み込む各オブジェクトに割り当てるメモリの量を制限することができます。
libjpeg¶
Kanzi が libjpeg 画像ライブラリを使用して読み込む各JPEGオブジェクトに割り当てるメモリの最大量をバイト単位で設定できます。
|
|
||
|
|||
値 |
|
||
|
# Sets the libjpeg memory allocation limit to 2 MB (2,000,000 bytes).
LibJPEGMaxMemory = 2000000
|
||
// Sets the libjpeg memory allocation limit to 2 MB (2,000,000 bytes).
configuration.imageLoad.libJPEGMaxMemory = 2000000;
|
libpng¶
libpng イメージライブラリを使用して、Kanzi がロードするチャンクの最大数と、PNG データストリーム内の補助チャンクの最大メモリ量(バイト単位)を設定できます。
デフォルトで、Kanzi は libpng によって課せられたこれらの制限を使用します。
sPLT、tEXt、iTXt、zTXt、および不明な補助チャンクの合計最大1000。
IDAT以外のチャンクに割り当てるメモリの最大値は8メガバイトです。
|
|
||||
|
|||||
値 |
|
||||
|
# Sets the libpng limit for the number of ancillary chunks to 500.
LibPNGChunkCacheMax = 500
# Sets the libpng limit for the amount of memory that a chunk
# other than IDAT can occupy to 2 MB (2,000,000 bytes).
LibPNGChunkMallocMax = 2000000
|
||||
// Sets the libpng limit for the number of ancillary chunks to 500.
configuration.imageLoad.libPNGChunkCacheMax = 500;
// Sets the libpng limit for the amount of memory that a chunk
// other than IDAT can occupy to 2 MB (2,000,000 bytes).
configuration.imageLoad.libPNGChunkMallocMax = 2000000;
|
シェーダーバイナリキャッシュ¶
パフォーマンスに制約のあるプラットフォームでは、シェーダーのコンパイルによってアプリケーションの起動が大幅に遅くなり、ランタイムのパフォーマンスが低下する可能性があります。アプリケーションが必要とするシェーダーのセットを事前に格納したシェーダーバイナリキャッシュを使用できます。これにより、アプリケーションはランタイムにソースからシェーダーをコンパイルする必要がなくなります。
バイナリシェーダーを使用すること を参照してください。
ShaderBinaryCacheDirectory¶
Kanzi アプリケーションがシェーダーバイナリをキャッシュするディレクトリを設定できます。キャッシュ時には、このディレクトリは書き込み可能である必要があります。製品用途では、ディレクトリを読み取り専用にすることができます。ShaderBinaryCacheReadOnly を参照してください。
シェーダーバイナリのキャッシュを有効にするには、ShaderBinaryCacheEnabled 設定を使用します。
|
|
||
|
|||
値 |
|
||
|
# Sets the shader binary cache directory to /tmp/shader-cache/.
ShaderBinaryCacheDirectory = "/tmp/shader-cache/"
|
||
// Sets the shader binary cache directory to /tmp/shader-cache/.
configuration.shaderBinaryCacheDirectory = "/tmp/shader-cache/";
|
ShaderBinaryCacheEnabled¶
アプリケーションを設定してシェーダーバイナリをキャッシュすることができます。これを使用して、オフラインシェーダーコンパイルツールが利用できないプラットフォームでの Kanzi アプリケーションのパフォーマンスを最適化します。
シェーダーバイナリのキャッシュには、Kanzi Studio がシェーダーのソースコードを kzb ファイルにエクスポートする必要があります。Kanzi Studio の Project > Properties で、Export Shader Source Code プロパティが有効になっていることを確認してください。これはデフォルトの値です。
|
|
||||
|
|||||
値 |
|
||||
|
# Enables the caching of shader binaries.
ShaderBinaryCacheEnabled = true
|
||||
// Enables the caching of shader binaries.
configuration.shaderBinaryCacheEnabled = true;
|
ShaderBinaryCacheCollisionCheck¶
デフォルトで、Kanzi はキャッシュされたシェーダーバイナリのファイル名にシェーダーソースコードのハッシュのみを保存します。Kanzi はその後、そのハッシュを要求されたシェーダーソースから導出されたハッシュ値と比較します。ハッシュの衝突は稀ですが、発生する可能性があり、誤ったシェーダーの使用につながります。
ハッシュの衝突を防ぐために、アプリケーションを設定してシェーダーのソースコードを保存し、シェーダーが同一であることを確認するために完全な文字列比較を行うことができます。もし2つのシェーダーが同じハッシュ値を生成した場合、アプリケーションは警告をログに記録します。
ディスクスペースを節約し、パフォーマンスを最適化するために、ハッシュ衝突チェックは開発中のみ有効にしてください。
|
|
||||
|
|||||
値 |
|
||||
|
# Enables checking for hash collisions in cached shaders.
ShaderBinaryCacheCollisionCheck = true
|
||||
// Enables checking for hash collisions in cached shaders.
configuration.shaderBinaryCacheCollisionCheck = true;
|
ShaderBinaryCacheReadOnly¶
デフォルトで、Kanzi はシェーダーバイナリキャッシュに書き込むことができます。アプリケーションが本番環境の準備が整ったら、シェーダーバイナリキャッシュを読み取り専用にすることができます。
|
|
||||
|
|||||
値 |
|
||||
|
# Makes the shader binary cache read-only.
ShaderBinaryCacheReadOnly = true
|
||||
// Makes the shader binary cache read-only.
configuration.ShaderBinaryCacheReadOnly = true;
|