アプリケーション構成リファレンス¶
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";
|
フォントエンジン¶
Kanzi は 2 つのフォントレンダリングバックエンドをサポートしています。
FreeType は、Kanzi に含まれているオープンソースベースのフォントエンジンです。ほとんどの一般的なユースケースに適しており、幅広いフォントフォーマットをサポートしています。FreeType ラスタライザー、HarfBuzz シェイパー、ICU バイディレクショナルライブラリ、および改行処理用の libunibreak を使用します。これがデフォルトのフォントエンジンです。
iType は、Monotype からの別途ライセンスが必要な商用ソフトウェアベースのフォントエンジンです。高度なフォントレンダリング機能と最適化を提供します。ラスタライズには Monotype iType ラスタライザーを、シェーピングには WorldType® Shaper™ を使用します。iType フォントエンジンのインストール を参照してください。
アプリケーション内のテキストをレンダリングするために、アプリケーションの起動時にロードするフォントエンジンを設定できます。次のものを使用できます。
FreeType: FreeType フォントエンジンを使用します。
iType: iType フォントエンジンを使用します。
None: フォントエンジンをロードしません。フォントエンジンをロードしない場合、Kanzi はアプリケーション内のテキストをレンダリングしません。
フォントエンジンを読み込む際には、次の点に注意してください。
スタティックビルドでは、ロードしたいフォントエンジンをアプリケーションにスタティックリンクする必要があります。
動的ビルドでは、Kanzi がフォントエンジンライブラリをロードします。
Kanzi Studio Preview がテキストをレンダリングするために使用するフォントエンジンを設定することもできます。プレビューのフォントエンジンを設定する を参照してください。
注釈
iType フォントエンジンと FreeType フォントエンジンは、異なるレンダリングおよびシェーピングのアルゴリズムを使用します。そのため、テキストのレンダリングとレイアウトに多少の違いが生じることが想定されます。場合によっては、これらのフォントエンジンがフォントファイルの異なる部分を解釈することもあります。
一方の Font Engine からもう一方に切り替える場合、これらの違いを最小限に抑えるか解消するために、フォントファイル自体の更新または調整が必要になることがあります。
|
|
||
|
|||
値 |
|
||
|
# 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 は毎秒レンダリングされるフレーム数を表示します。
Last Frame は、最後のフレームの情報を次のように表示します。
Main Loop Counter は、Kanzi メインループが実行された回数を示します。
Time はフレームをレンダリングするのにかかった時間をミリ秒で表示します。
Batch Count は、個々のドローコールが何回実行されたかを示します(
glDrawElementsとglDrawArrays)。Kanzi Engine APIを使用して
Renderer::getBatchCountを呼び出すことで、バッチ数にアクセスできます。Triangle Count は、フレーム中に合計で描画された個々の三角形の数を示します。
Kanzi Engine APIで
Renderer::getTriangleCountを呼び出すことにより、三角形の数にアクセスできます。Texture Switches は、新しいテクスチャがGPUにバインドされた回数を示します。
Kanzi Engine APIで
Renderer::getTextureSwitchCountを呼び出すことにより、テクスチャスイッチのカウントにアクセスできます。FBO Switches は、GPUにバインドされたフレームバッファオブジェクトの数を示します。レンダリングのベストプラクティス を参照してください。
Kanzi Engine APIで
Renderer::getFramebufferSwitchCountを呼び出すことにより、バッファスイッチカウントにアクセスできます。Timeline Clock は、アプリケーション内のすべてのアニメーションを実行するのにかかった時間をミリ秒で表示します。
Shader は、新しく適用されたバッチに対して新しいシェーダーがバインドされた回数と、最後のフレームに送信された個々のシェーダーユニフォームの数を示します。シェーダースイッチの削減 を参照してください。
Kanzi Engine APIで
Renderer::getShaderSwitchCountを呼び出すことにより、シェーダースイッチのカウントにアクセスできます。Kanzi Engine APIで送信されたユニフォームには、
Renderer::getUniformSendCountを呼び出すことでアクセスできます。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) |
設定名 |
プロファイラ |
|---|---|---|
アプリケーション初期化 |
|
|
デフォルトのリソース登録 |
|
|
グラフィックスの初期化 |
|
|
GL サブシステム初期化 |
|
|
スタートアップ 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;
|
グリフキャッシュテクスチャのサイズ¶
Text Block を使用する場合、Kanzi はフォントとフォントサイズの組み合わせごとにグリフキャッシュテクスチャを作成します。グリフキャッシュテクスチャがいっぱいになったとき、または Kanzi アプリケーションのパフォーマンスを最適化するために、グリフキャッシュテクスチャのサイズを調整するために、高さと幅を設定できます。
大きなグリフキャッシュテクスチャはより多くのVRAMを使用するため、最終的なサイズを設定する前に異なるサイズを試してください。グリフキャッシュテクスチャサイズの上限はGPUに依存しますが、通常は2048ピクセル×2048ピクセルです。グリフキャッシュテクスチャのデフォルトサイズは512ピクセル×512ピクセルです。
Kanzi は、すべてのグリフキャッシュテクスチャにグリフキャッシュテクスチャのサイズを適用します。
|
|
||
|
|||
値 |
|
||
|
# Sets the glyph cache texture height to 768, and width to 1024 pixels.
GlyphCacheHeight = 768
GlyphCacheWidth = 1024
|
||
// Sets the glyph cache texture height to 768, and width to 1024 pixels.
configuration.glyphCacheHeight = 768;
configuration.glyphCacheWidth = 1024;
|
最適化¶
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;
|
マルチサンプルプリファレンス¶
Kanzi がマルチサンプリングをどのように実行するかを設定できます: レンダーバッファからのブリッティングまたは暗黙のマルチサンプリング。
レンダーバッファ Kanzi からブリットする際、最初にマルチサンプルレンダーバッファにレンダリングします。レンダリングが完了すると、Kanzi が結果を通常のテクスチャにブリットすることでサンプルを解決します。レンダーバッファからブリットするには、次のいずれかが必要です。
あなたのプラットフォームはOpenGL (ES) 3以上をサポートしています。
GL_ARB_framebuffer_object 拡張機能が利用可能です。
GL_NV_framebuffer_blit と GL_NV_framebuffer_multisample 拡張機能が利用可能です。
暗黙のマルチサンプリングとは、Kanzi がマルチサンプルデータの明示的な解決を必要とせずに、テクスチャに対してマルチサンプルレンダリングを行うことを意味します。つまり、データをダウンサンプリングしてピクセルごとに単一のサンプルにします。暗黙のマルチサンプリングには、次のいずれかの拡張機能が利用可能である必要があります。
GL_EXT_multisampled_render_to_texture
GL_IMG_multisampled_render_to_texture
デフォルトで、Kanzi は最適と判断したマルチサンプリング方法を選択します。
デスクトッププラットフォームでは、Kanzi はレンダーバッファからブリットします。
OpenGL ESを使用するプラットフォームでは、Kanzi は暗黙のマルチサンプリングを使用します。
アンチエイリアスの適用 を参照してください。
|
|
||
|
|||
値 |
|
||
|
# Uses implicit multisampling.
MultisamplePreference = Implicit
|
||
// Uses implicit multisampling.
configuration.multisamplePreference = Renderer::RendererSettings::MultisamplePreferenceImplicit;
|
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;
|
グラフィックスパフォーマンスのロギング¶
GraphicsLoggingEnabled¶
Kanzi を有効にすると、Application::onConfigure 関数内、application.cfg、またはコマンドライン引数を使用して、アプリケーションのグラフィックス API 呼び出しをデバッグコンソールに出力できます。ターゲットがコマンドライン引数をサポートしている場合に限ります。
コマンドラインでは、以下を使用します。
グラフィックスAPI呼び出しを記録するために
-log-graphics
|
|
||||
|
|||||
値 |
|
||||
|
# Enables the logging of the graphics API calls.
GraphicsLoggingEnabled = 1
|
||||
// Enables the logging of the graphics API calls.
configuration.graphicsLoggingEnabled = 1;
|
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オペレーティングシステムでは、Application::onConfigure 関数内、application.cfg 内、またはコマンドライン引数を使用して、OpenGL ESまたはOpenGLを使用するかどうかを選択できます。ターゲットがコマンドライン引数をサポートしている場合に限ります。
コマンドラインでは、以下を使用します。
-glesを使用して OpenGL ES を利用する-glを使用して OpenGL を利用するEGLを使用する
-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;
|
サーフェスのプロパティ¶
サーフェスのプロパティは、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 = "legacy"
|
||
// Set your application to use an unspecified color space.
configuration.defaultSurfaceProperties.colorSpace = "legacy";
|
|||
コマンドライン例 |
アプリケーションで未指定のカラースペースを使用するように設定します。 -surface-color-space=legacy
|
カラーワークフロー を参照してください。
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;
|
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";
|
グラフィックスカードの選択¶
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";
|
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 を参照してください。
|
|
||
|
|||
バリュー (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;
|
GroupName¶
QNX など、ウィンドウグループ名を使用するウィンドウシステムを備えたプラットフォームでは、アプリケーションウィンドウグループのグループ名を設定できます。複数の Kanzi アプリケーションを実行する場合は、各 Kanzi アプリケーションでウィンドウグループに一意の名前を設定してください。
|
|||
値 |
|
||
// Set the Kanzi application window group name to Cluster.
configuration.defaultWindowProperties.groupName = "Cluster";
|
ウィンドウタイトル¶
Kanzi のウィンドウタイトルを設定できます。デフォルトのウィンドウタイトルは "Kanzi" です。
|
|
|
|
コマンドラインで |
|
|
# Sets "kanzi" as window title.
WíndowTitle = kanzi
|
// Sets "kanzi" as window title.
configuration.systemConfiguration[ConfigurationKeyDefaultWindowTitle] = "kanzi";
|
|
コマンドライン例 |
ウィンドウタイトルとして "kanzi" を設定します。 -window-title=kanzi
|
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¶
Kanzi アプリケーションウィンドウの場合、セルフレイアウトの QNX Screen プロパティをプログラムで設定できます。このプロパティを使用すると、通常はウィンドウマネージャーでしか変更できないプロパティを設定できます。
m_applicationProperties.defaultWindowProperties.selfLayout = selfLayout;
configuration.systemConfiguration[ConfigurationKeyDefaultQnxWindowSelfLayout] = selfLayout;
|
|||
値 |
|
||
// To enable self layout for this window.
m_applicationProperties.defaultWindowProperties.selfLayout = 1;
configuration.systemConfiguration[ConfigurationKeyDefaultQnxWindowSelfLayout] = "1";
|
|||
|
# Sets the QNX window self layout to true.
QnxWindowSelfLayout = 1
|
||
コマンドライン例 |
このウィンドウのセルフレイアウトを有効にします。 -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;
|