アプリケーション構成リファレンス

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 Player C++アプリケーションのない Kanzi Studio プロジェクトがある場合

  • <ProjectName>/Application/bin C++アプリケーションを含む 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 ファイル を参照してください。

application.cfg で

BinaryName = "name"

Application::onConfigure で

configuration.binaryName = "name";

バリュー (Value)

name

Kanzi アプリケーションがロードするすべての kzb ファイルをリストする kzb 設定ファイル、または 1 つの kzb ファイルへのパス。

application.cfg の例

# 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"

Application::onConfigure の例

// 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 からもう一方に切り替える場合、これらの違いを最小限に抑えるか解消するために、フォントファイル自体の更新または調整が必要になることがあります。

application.cfg で

FontEngine = fontEngine

Application::onConfigure で

configuration.fontEngine = fontEngine;

値

fontEngine

Kanzi がアプリケーションの起動時にロードするフォントエンジン。

iTypeフォントエンジンをロードするには:

  • application.cfg で IType を使用します。

  • Application::onConfigure で ApplicationProperties::FontEngine::IType を使用します。

FreeTypeフォントエンジンをロードするには(デフォルト値):

  • application.cfg で FreeType を使用します。デフォルト値。

  • Application::onConfigure で ApplicationProperties::FontEngine::FreeType を使用します。デフォルト値。

フォントエンジンをロードしないようにするには、

  • application.cfg で None を使用します。

  • Application::onConfigure で ApplicationProperties::FontEngine::None を使用します。

フォントエンジンをロードしない場合、Kanzi はアプリケーション内のテキストをレンダリングしません。

application.cfg の例

# Load the iType font engine at application startup.
FontEngine = IType

Application::onConfigure の例

// Load the iType font engine at application startup.
configuration.fontEngine = ApplicationProperties::FontEngine::IType;

フォントエンジン辞書

Kanzi iTypeフォントエンジンがタイ語テキストで単語を折り返す方法をカスタマイズするには、iTypeフォントエンジンに組み込まれているものの代わりに使用したいタイ語辞書を設定することができます。

iTypeフォントエンジンを使用したタイ語テキストのワードラッピングのカスタマイズ を参照してください。

application.cfg で

ITypeDictionaryUrls = fontEngineDictionaryUrls

Application::onConfigure で

configuration.fontEngineDictionaryUrls[fontEngine] = fontEngineDictionaryUrls

値

fontEngineDictionaryUrls

セミコロンで区切られた、使用したい辞書へのURLのリスト。辞書の順序と形式は、アプリケーションが使用するフォントエンジンに依存します。フォントエンジン を参照してください。

fontEngine

追加の辞書を設定するフォントエンジン。Kanzi は ApplicationProperties::FontEngine::IType のみをサポートします。

application.cfg の例

# Set additional backend dictionaries.
ITypeDictionaryUrls = file:///usr/share/itype/thai-dictionary.wtd

Application::onConfigure の例

// Set additional backend dictionaries.
configuration.fontEngineDictionaryUrls[ApplicationProperties::FontEngine::IType] = "file:///usr/share/itype/thai-dictionary.wtd";

ModuleNames

Kanzi アプリケーションを起動する際に、どのプラグインを Kanzi アプリケーションがロードするかを設定できます。

application.cfg で

ModuleNames= "names"

Application::onConfigure で

configuration.moduleNames = names;

値

names

ロードするプラグインのリスト。

application.cfg の例

# Loads the plugin DLL files MyPlugin1.dll and MyPlugin2.dll.
ModuleNames = "MyPlugin1; MyPlugin2"

Application::onConfigure の例

// 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の応答性とリソースのロードのバランスを取る を参照してください。

application.cfg で

DeploymentQueueBudget = milliseconds

Application::onConfigure で

configuration.deploymentQueueBudget = milliseconds;

値

milliseconds

各フレームでリソース展開に費やす最大ミリ秒数。デフォルト値は0です。Kanzi Android framework (droidfw) アプリケーションの場合、デフォルト値は5です。

application.cfg の例

# 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

Application::onConfigure の例

// 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 は常にメインスレッドを使用します。画像とテクスチャのベストプラクティス、シェーダーのベストプラクティス、メッシュベストプラクティス を参照してください。

application.cfg で

LoadingThreadCount = threads

Application::onConfigure で

configuration.loadingThreadCount = threads;

値

threads

リソースのロードに使用する CPU コアの数。デフォルト値は 3 です。

application.cfg の例

# 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

Application::onConfigure の例

// 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に展開される前に、より多くのリソースをメモリにロードできるためです。

application.cfg で

MaxPendingResources = resources

Application::onConfigure で

configuration.maxPendingResources  = resources;

値

resources

ロードスレッドで同時に処理するリソースの最大数。デフォルト値は0で、リソースの最大数をロードスレッドの数+1に設定します。

application.cfg の例

# 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

Application::onConfigure の例

// 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 関数を呼び出して手動でレンダリングをトリガーする必要があります。

application.cfg で

ApplicationIdleState = value

Application::onConfigure で

configuration.applicationIdleStateEnabled = value;

値

0

アプリケーションのアイドル状態を無効にします。

1

アプリケーションのアイドル状態を有効にします。デフォルト値。

application.cfg の例

# Disables the application idle state.
ApplicationIdleState = 0

Application::onConfigure の例

// Disables the application idle state.
configuration.applicationIdleStateEnabled = 0;

MaximumFPS

1 秒間にレンダリングされるフレーム数を制限するには、最大フレームレートを設定できます。

Kanzi アプリケーションがアニメーションを表示している場合、Kanzi はデフォルトでCPUを最大FPSにスロットルします。アニメーションがない場合、Kanzi はアプリケーションをアイドル状態に設定します。このため、CPUと電力を節約するために、Kanzi はデフォルトで最大フレームレートを1秒あたり60フレームに制限します。アプリケーションの設定を使用して、アプリケーションの最大フレームレートを設定してください。

PerformanceInfoLevel を参照してください。

application.cfg で

MaximumFPS = limit

Application::onConfigure で

configuration.frameRateLimit = limit;

バリュー (Value)

limit

アプリケーションの最大フレームレート (1 秒あたりのフレーム数)。

application.cfg の例

# Sets the maximum application frame rate to 32 frames per second.
MaximumFPS = 32
# Disables the limit.
MaximumFPS = 0

Application::onConfigure の例

// 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 を参照してください。

ベストプラクティス を参照してください。

application.cfg で

PerformanceInfoLevel = level

Application::onConfigure で

configuration.performanceInfoLevel = ApplicationProperties::level;

値

level

パフォーマンス情報の表示レベル。

Performance HUD の表示を無効にするには、

  • application.cfg で 0 を使用します。デフォルト値。

  • Application::onConfigure で PerformanceInfoLevelDisabled を使用します。デフォルト値。

1 秒あたりのフレーム数 (FPS) が表示されるようにするには:

  • application.cfg で 1 を使用します。

  • Application::onConfigure で PerformanceInfoLevelFPS を使用します。

Performance HUD を完全に表示するには、

  • application.cfg で 2 を使用します。

  • Application::onConfigure で PerformanceInfoLevelFull を使用します。

application.cfg の例

# Enables the full Performance HUD in a Kanzi application.
PerformanceInfoLevel = 2

Application::onConfigure の例

// Enables the full Performance HUD in a Kanzi application.
configuration.performanceInfoLevel = ApplicationProperties::PerformanceInfoLevelFull;

PerformanceInfoPosition

Kanzi アプリケーションのウィンドウ内で Performance HUD の位置を設定できます。Kanzi アプリケーションのウィンドウ内で Performance HUD を表示するには、有効にする必要があります。PerformanceInfoLevel を参照してください。

application.cfg で

PerformanceInfoPositionX = positionX

PerformanceInfoPositionY = positionY

Application::onConfigure で

configuration.performanceInfoProperties.positionX = positionX;

configuration.performanceInfoProperties.positionY = positionY;

バリュー (Value)

positionX

Kanzi アプリケーションウィンドウの左上隅から Performance HUD の左上隅までの水平位置。Performance HUD をウィンドウの左に配置するには0を使用します。

positionY

Kanzi アプリケーションウィンドウの左上隅から Performance HUD の左上隅までの垂直位置。Performance HUD をウィンドウの上部に配置するには、0 を使用します。

application.cfg の例

# 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

Application::onConfigure の例

// 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 のフォントサイズを設定できます。

application.cfg で

PerformanceInfoFontSize = fontSize

Application::onConfigure で

configuration.performanceInfoProperties.fontSize = fontSize;

バリュー (Value)

fontSize

フォントサイズは 10 から 100 の範囲で設定できます。デフォルト値は 12 です。

application.cfg の例

# The font size of the Performance HUD is 20
PerformanceInfoFontSize = 20

Application::onConfigure の例

// The font size of the Performance HUD is 20
configuration.performanceInfoProperties.fontSize = 20;

PerformanceInfoGraphFilter

Performance HUD でグラフとして表示したいメインループタスクを選択できます。デフォルトのメインループタスクの名前については、application.hpp で Application::initializeMainLoopTasks() の実装を参照してください。Kanzi アプリケーションのウィンドウで Performance HUD を表示するには、有効にする必要があります。PerformanceInfoLevel を参照してください。

application.cfg で

PerformanceInfoGraphFilter = "category"

Application::onConfigure で

configuration.performanceInfoProperties.graphFilter = "category";

バリュー (Value)

category

1 つ以上のメインループタスクの名前。複数の名前はセミコロン (;) で区切ります。

application.cfg の例

# Enables graphs for tasks Render and MyCustomTask.
PerformanceInfoGraphFilter="Render;MyCustomTask"

Application::onConfigure の例

// Enables graphs for tasks Render and MyCustomTask.
configuration.performanceInfoProperties.graphFilter="Render;MyCustomTask"

ProfilingCategoryFilter

パフォーマンスプロファイラーのグループ化に使用するパフォーマンスプロファイリングカテゴリの状態を制御できます。アプリケーションパフォーマンスの測定 と リソースの読み込みとデプロイ時間の測定 を参照してください。

application.cfg で

ProfilingCategoryFilter = "category=state"

Application::onConfigure で

configuration.profilingCategoryFilter = "category=state";

値

category

1 つ以上のプロファイリングカテゴリの名前。複数の名前はパイプ (|) で区切ります。

すべてのカテゴリの状態を設定するには、アスタリスク (*) を使用します。

state

off

パフォーマンスプロファイリングカテゴリを無効にします。

on

パフォーマンスプロファイリングカテゴリを有効にします。

リストに含めるカテゴリと状態のペアでは、各ペアをセミコロン (;) で区切ります。

application.cfg の例

# 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"

Application::onConfigure の例

# 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)

設定名

プロファイラ

アプリケーション初期化

StartupInitialization

StartupProfilerRegistry::m_initializationProfiler

デフォルトのリソース登録

StartupRegisterDefaultResources

StartupProfilerRegistry::m_registerDefaultResourcesProfiler

グラフィックスの初期化

StartupInitializeGraphics

StartupProfilerRegistry::m_initializeGraphicsProfiler

GL サブシステム初期化

StartupInitializeGL

StartupProfilerRegistry::m_initializeGLProfiler

スタートアップ kzb ファイルオープン

StartupOpenKzb

StartupProfilerRegistry::m_openKzbProfiler

ロードスレッド初期化

StartupInitializeLoadingThreads

StartupProfilerRegistry::m_initializeLoadingThreadsProfiler

メタデータ登録

StartupRegisterMetadata

StartupProfilerRegistry::m_registerMetadataProfiler

プラグインロード

StartupLoadPlugins

StartupProfilerRegistry::m_loadPluginsProfiler

プレハブロード

StartupLoadPrefab

StartupProfilerRegistry::m_loadPrefabProfiler

プレハブインスタンス化

StartupInstantiatePrefab

StartupProfilerRegistry::m_instantiatePrefabProfiler

プレハブ添付

StartupAttachPrefab

StartupProfilerRegistry::m_attachPrefabProfiler

レンダラーリセット

StartupResetRenderer

StartupProfilerRegistry::m_resetRendererProfiler

ランタイムアセット登録

StartupRegisterRuntimeAssets

StartupProfilerRegistry::m_registerRuntimeAssetsProfiler

ドメイン初期化

StartupInitializeDomain

StartupProfilerRegistry::m_initializeDomainProfiler

Application::onProjectLoaded

StartupOnProjectLoaded

StartupProfilerRegistry::m_onProjectLoadedProfiler

Application::resumeGL

StartupResumeGL

StartupProfilerRegistry::m_resumeGLProfiler

MainLoopProfilingSampleBufferCount

Profiling build に含まれるメインループパフォーマンスプロファイラのサンプルバッファサイズを設定できます。Kanzi Engine のパフォーマンスを測定する と ProfilingCategoryFilter を参照してください。

application.cfg で

MainLoopProfilingSampleBufferCount = samples

Application::onConfigure で

configuration.mainLoopProfilingSampleBufferCount = samples

値

samples

Kanzi プロファイリングビルドに含まれるメインループパフォーマンスプロファイラのバッファ内のサンプルの最大数。デフォルト値は1024です。

application.cfg の例

# Sets the maximum number of samples in main loop performance profilers
# to 3600.
MainLoopProfilingSampleBufferCount = 3600

Application::onConfigure の例

// 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 は、すべてのグリフキャッシュテクスチャにグリフキャッシュテクスチャのサイズを適用します。

application.cfg で

GlyphCacheHeight = size

GlyphCacheWidth = size

Application::onConfigure で

configuration.glyphCacheHeight = size;

configuration.glyphCacheWidth = size;

値

size

グリフキャッシュテクスチャのサイズ (ピクセル単位)。デフォルト値は512です。

application.cfg の例

# Sets the glyph cache texture height to 768, and width to 1024 pixels.
GlyphCacheHeight = 768
GlyphCacheWidth = 1024

Application::onConfigure の例

// 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()

  • アプリケーションウィンドウの幅と高さを明示的に設定します。アプリケーションウィンドウの位置とサイズ を参照してください。

この構成を使ってグラフィックスの初期化を無効にする場合、設定が無効になるアプリケーションごとに個別にグラフィックスを初期化する必要があります。

application.cfg で

InitializePlatform = value

Application::onConfigure で

configuration.defaultWindowProperties.initializePlatform  = value;

値

0

グラフィックスの初期化を無効にします。

1

グラフィックスの初期化を有効にします。デフォルト値。

application.cfg の例

# Disables the graphics initialization.
InitializePlatform = 0

Application::onConfigure の例

// 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 は暗黙のマルチサンプリングを使用します。

アンチエイリアスの適用 を参照してください。

application.cfg で

MultisamplePreference = preference

Application::onConfigure で

configuration.multisamplePreference = Renderer::RendererSettings::preference;

値

preference

マルチサンプリングの設定。

マルチサンプリングの設定を行わず、Kanzi に最適な方法を選択させるには:

  • application.cfg で None を使用します。デフォルト値。

  • Application::onConfigure で MultisamplePreferenceNone を使用します。デフォルト値。

レンダーバッファからブリットするには:

  • application.cfg で Blit を使用します。

  • Application::onConfigure で MultisamplePreferenceBlit を使用します。

暗黙のマルチサンプリングを使用するには:

  • application.cfg で Implicit を使用します。

  • Application::onConfigure で MultisamplePreferenceImplicit を使用します。

application.cfg の例

# Uses implicit multisampling.
MultisamplePreference = Implicit

Application::onConfigure の例

// Uses implicit multisampling.
configuration.multisamplePreference = Renderer::RendererSettings::MultisamplePreferenceImplicit;

MmapMode

対応しているオペレーティングシステムでは、Kanzi がシステムにファイルをメモリマップする方法を指示する設定が可能です。

  • レイジーマッピングは、ファイルのその部分をマッピングする前に、Kanzi アプリケーションがファイルの内容にアクセスするのを待ちます。

  • イージャーマッピングは、ファイル全体を即座にマッピングします。

アプリケーションの動作は、2つの戦略の間で同一ですが、ファイルをマッピングする際のランタイムコストを支払うタイミングを選択できます。

デフォルトで、Kanzi はシステムのデフォルトのメモリマッピング戦略を使用します。

application.cfg で

MmapMode = mode

Application::onConfigure で

configuration.mmapMode = mode

コマンドラインで

-mmap=mode

値

mode

使用するメモリマッピング戦略。

システムのデフォルトを使用するには:

  • application.cfg で default を使用します。デフォルト値。

  • Application::onConfigure で MmapMode::Default を使用します。デフォルト値。

  • コマンドラインでは、default を使用します。

イージャーマッピングを使用するには:

  • application.cfg で eager を使用します。

  • Application::onConfigure で MmapMode::Eager を使用します。

  • コマンドラインでは、eager を使用します。

レイジーマッピングを使用するには:

  • application.cfg で lazy を使用します。

  • Application::onConfigure で MmapMode::Lazy を使用します。

  • コマンドラインでは、lazy を使用します。

コマンドライン設定は application.cfg よりも優先されます。コマンドラインで複数のインスタンスを指定した場合、Kanzi は最初のインスタンスのみを使用し、他は無視します。

application.cfg の例

# Uses lazy memory mapping.
MmapMode = lazy

Application::onConfigure の例

// Uses lazy memory mapping.
configuration.mmapMode = MmapMode::Lazy;

GPU リソース (GPU resources)

HandleGPUResources

Kanzi アプリケーションが一時停止状態 (MainLoopState::Paused) で kzb ファイルに保存されていない GPU リソースをどのように処理するかを設定できます。

application.cfg で

HandleGPUResources = handling

Application::onConfigure で

configuration.handleGPUResources = handling

値

handling

一時停止状態でGPUリソースを処理する方法。

何もしない(Androidを除くすべてのプラットフォームでのデフォルト値):

GPUリソースを無効にするには(Androidでのデフォルト値):

GPU リソースを破棄するため、

application.cfg の例

# Invalidates the GPU resources.
HandleGPUResources = invalidate

Application::onConfigure の例

// Invalidates the GPU resources.
configuration.handleGPUResources = ApplicationProperties::HandleGPUResources::Invalidate;

グラフィックスパフォーマンスのロギング

GraphicsLoggingEnabled

Kanzi を有効にすると、Application::onConfigure 関数内、application.cfg、またはコマンドライン引数を使用して、アプリケーションのグラフィックス API 呼び出しをデバッグコンソールに出力できます。ターゲットがコマンドライン引数をサポートしている場合に限ります。

コマンドラインでは、以下を使用します。

  • グラフィックスAPI呼び出しを記録するために -log-graphics

application.cfg で

GraphicsLoggingEnabled = value

Application::onConfigure で

configuration.graphicsLoggingEnabled  = value;

値

0

グラフィックス API 呼び出しのロギングを無効にします。デフォルト値。

1

グラフィックス API 呼び出しのロギングを有効にします。

application.cfg の例

# Enables the logging of the graphics API calls.
GraphicsLoggingEnabled = 1

Application::onConfigure の例

// Enables the logging of the graphics API calls.
configuration.graphicsLoggingEnabled = 1;

LogOpenGLExtensions

Kanzi を有効にすると、アプリケーションの起動時にグラフィック関連の拡張機能のリストをデバッグコンソールに出力できます。

application.cfg で

LogOpenGLExtensions = value

Application::onConfigure で

configuration.extensionOutputEnabled = value;

値

0

グラフィックス関連の拡張機能のロギングを無効にします。デフォルト値。

1

グラフィックス関連の拡張機能のロギングを有効にします。

application.cfg の例

# Enables the logging of the graphics-related extensions.
LogOpenGLExtensions = 1

Application::onConfigure の例

// 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)

application.cfg で

LogOpenGLInformation = value

Application::onConfigure で

configuration.informationOutputEnabled = value;

値

0

グラフィックス関連の情報のロギングを無効にします。デフォルト値。

1

グラフィックス関連の情報のロギングを有効にします。

application.cfg の例

# Enables the logging of the graphics-related information.
LogOpenGLInformation = 1

Application::onConfigure の例

// Enables the logging of the graphics-related information.
configuration.informationOutputEnabled = 1;

LogSurfaceInformation

Kanzi を有効にすると、アプリケーションの起動時にこれらのグラフィックス関連プロパティをデバッグコンソールに出力できます。

application.cfg で

LogSurfaceInformation = value

Application::onConfigure で

configuration.propertyOutputEnabled = value;

値

0

グラフィックス関連のプロパティのロギングを無効にします。デフォルト値。

1

グラフィックス関連のプロパティのロギングを有効にします。

application.cfg の例

# Enables the logging of the graphics-related properties.
LogSurfaceInformation = 1

Application::onConfigure の例

// 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 を使用する前に、有効にする必要があります。

application.cfg で

QnxEnableSlogger2 = value

Application::onConfigure で

configuration.slog2Config.enabled = value

値

true

slogger2を有効にします。

false

slogger2を無効にします。デフォルト値。

application.cfg の例

# Enable logging to slogger2.
QnxEnableSlogger2 = true

Application::onConfigure の例

// Enable logging to slogger2.
configuration.slog2Config.enabled = true;

QnxSlogger2VerbosityLevel

どのログメッセージをslogger2に記録させるかを設定できます。Kanzi アプリケーションの構成の詳細度レベルは、slogger2のログ詳細度レベルにマップされます。

application.cfg で

QnxSlogger2VerbosityLevel = value

Application::onConfigure で

configuration.slog2Config.verbosityLevel = Slog2VerbosityLevel::value

値

Slog2Shutdown

slogger2レベル SLOG2_SHUTDOWN にマップします。

Slog2Critical

slogger2レベル SLOG2_CRITICAL にマップします。

Slog2Error

slogger2レベル SLOG2_ERROR にマップします。

Slog2Warning

slogger2レベル SLOG2_WARNING にマップします。

Slog2Notice

slogger2レベル SLOG2_NOTICE にマップします。

Slog2Info

slogger2レベル SLOG2_INFO にマップします。

Slog2Debug1

slogger2レベル SLOG2_DEBUG1 にマップします。

Slog2Debug2

slogger2レベル SLOG2_DEBUG2 にマップします。デフォルト値。

application.cfg の例

# Sets the slogger2 log level to SLOG2_INFO.
QnxSlogger2VerbosityLevel = Slog2Info

Application::onConfigure の例

// Sets the slogger2 log level to SLOG2_INFO.
configuration.slog2Config.verbosityLevel = Slog2VerbosityLevel::Slog2Info;

QnxSlogger2MaxRetries

QNXバージョン7.0.4以降では、slogger2がバッファを取得するためにリトライする回数を制限できます。

この制限を設定し、slogger2がそれに達すると、Kanzi はログメッセージを削除し、削除されたメッセージの数を増やします。削除されていない次のログエントリで、ログメッセージの前に書かれた変数 code のslogger2ログにおいて、削除されたメッセージの数を確認できます。

application.cfg で

QnxSlogger2MaxRetries = value

Application::onConfigure で

configuration.slog2Config.maxRetries = value

値

value

制限を設定するuint32_t値です。デフォルトで、Kanzi アプリケーションはこれを Slog2UnlimitedRetries (UINT32_MAX)に設定します。これは、リトライの回数が制限されていないことを意味します。

application.cfg の例

# Set the retry limit to 10 retries.
QnxSlogger2MaxRetries = 10

Application::onConfigure の例

// Set the retry limit to 10 retries.
configuration.slog2Config.maxRetries = 10;

pageCount

QNXロガーが内部のslogger2バッファ用に取得する4KBページの倍数を設定できます。

Application::onConfigure で

configuration.slog2Config.pageCount = value

値

value

slogger2バッファに割り当てるページ数の整数値。デフォルトは8です。

Application::onConfigure の例

// 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を使用する -egl

  • WGLを使用する -wgl

  • GLXを使用する -glx

application.cfg で

SurfaceClientAPI = clientApi

GraphicsContextAPI = contextApi

Application::onConfigure で

configuration.defaultSurfaceProperties.clientAPI = clientApi;

configuration.defaultSurfaceProperties.contextAPI = contextApi;

値

clientApi

OpenGL ESを使用するには:

OpenGL を使用するには、

contextApi

WGL を使用するには、

EGL を使用するには、

GLX を使用するには、

application.cfg の例

# Sets the surface target for OpenGL rendering and WGL graphics context.
SurfaceClientAPI = gl
GraphicsContextAPI = wgl

Application::onConfigure の例

// 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色チャンネルとアルファチャンネルのサイズをビット単位で設定できます。

application.cfg で

SurfaceBitsRed = red

SurfaceBitsGreen = green

SurfaceBitsBlue = blue

SurfaceBitsAlpha = alpha

Application::onConfigure で

configuration.defaultSurfaceProperties.bitsColorR = red;

configuration.defaultSurfaceProperties.bitsColorG = green;

configuration.defaultSurfaceProperties.bitsColorB = blue;

configuration.defaultSurfaceProperties.bitsAlpha = alpha;

値

red

赤チャンネルのサイズ (ビット単位)。

green

緑チャンネルのサイズ (ビット単位)。

blue

青チャンネルのサイズ (ビット単位)。

alpha

アルファチャンネルのサイズ (ビット単位)。

各チャンネルのデフォルトサイズは 8 ビットです。

プラットフォームに値を選ばせるには、"unspecified" を使用します。

application.cfg の例

# 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"

Application::onConfigure の例

// 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;

プラットフォームに色とアルファチャンネルのサイズを選択させるには:

  • Android WS、Emscripten、QNX EGL、Wayland EGL、または X11 EGL グラフィックス出力の場合:

    configuration.systemConfiguration[ConfigurationKeyDefaultSurfaceBitsRed] = "unspecified";
    configuration.systemConfiguration[ConfigurationKeyDefaultSurfaceBitsGreen] = "unspecified";
    configuration.systemConfiguration[ConfigurationKeyDefaultSurfaceBitsBlue] = "unspecified";
    configuration.systemConfiguration[ConfigurationKeyDefaultSurfaceBitsAlpha] = "unspecified";
    
  • 他のグラフィックス出力の場合:

    configuration.defaultSurfaceProperties.bitsColorR = KZS_SURFACE_PROPERTY_DONT_CARE;
    configuration.defaultSurfaceProperties.bitsColorG = KZS_SURFACE_PROPERTY_DONT_CARE;
    configuration.defaultSurfaceProperties.bitsColorB = KZS_SURFACE_PROPERTY_DONT_CARE;
    configuration.defaultSurfaceProperties.bitsAlpha = KZS_SURFACE_PROPERTY_DONT_CARE;
    

SurfaceBitsStencil

ステンシルバッファのサイズをビット単位で設定できます。

application.cfg で

SurfaceBitsStencil = bufferSize

Application::onConfigure で

configuration.defaultSurfaceProperties.bitsStencil = bufferSize;

値

bufferSize

ステンシルバッファのサイズ (ビット単位)。

デフォルト値は 8 bits です。

プラットフォームに値を選ばせるには、"unspecified" を使用します。

application.cfg の例

# Set the size of the stencil buffer to one bit.
SurfaceBitsStencil = 1
# Let the platform choose the size of the stencil buffer.
SurfaceBitsStencil = "unspecified"

Application::onConfigure の例

// Set the size of the stencil buffer to one bit.
configuration.defaultSurfaceProperties.bitsStencil = 1;

プラットフォームにステンシルバッファのサイズを選択させるには、

  • Android WS、Emscripten、QNX EGL、Wayland EGL、または X11 EGL グラフィックス出力の場合:

    configuration.systemConfiguration[ConfigurationKeyDefaultSurfaceBitsStencil] = "unspecified";
    
  • 他のグラフィックス出力の場合:

    configuration.defaultSurfaceProperties.bitsStencil = KZS_SURFACE_PROPERTY_DONT_CARE;
    

SurfaceBitsDepthBuffer

深度バッファのサイズをビット単位で設定できます。

application.cfg で

SurfaceBitsDepthBuffer = bufferSize

Application::onConfigure で

configuration.defaultSurfaceProperties.bitsDepthBuffer = bufferSize;

値

bufferSize

デプスバッファのサイズ (ビット単位)。

デフォルト値は 24 ビットです。

プラットフォームに値を選ばせるには、"unspecified" を使用します。

application.cfg の例

# Set the size of the depth buffer to 16 bits.
SurfaceBitsDepthBuffer = 16
# Let the platform choose the size of the depth buffer.
SurfaceBitsDepthBuffer = "unspecified"

Application::onConfigure の例

// Set the size of the depth buffer to 16 bits.
configuration.defaultSurfaceProperties.bitsDepthBuffer = 16;

プラットフォームにデプスバッファのサイズを選択させるには:

  • Android WS、Emscripten、QNX EGL、Wayland EGL、または X11 EGL グラフィックス出力の場合:

    configuration.systemConfiguration[ConfigurationKeyDefaultSurfaceBitsDepth] = "unspecified";
    
  • 他のグラフィックス出力の場合:

    configuration.defaultSurfaceProperties.bitsDepthBuffer = KZS_SURFACE_PROPERTY_DONT_CARE;
    

SurfaceBitsPadding

QNXでは、Kanzi アプリケーションウィンドウのカラーフォーマットに追加するパディングのサイズをビット単位で設定できます。

application.cfg で

SurfaceBitsPadding = padding

Application::onConfigure で

configuration.defaultSurfaceProperties.bitsPadding = padding;

値

padding

アプリケーションウィンドウのカラーフォーマットに追加するパディングのサイズ (ビット単位)。

デフォルトで、Kanzi はプラットフォームがサイズを選択することを許可します。

application.cfg の例

# Set the size of the padding to 2 bits.
SurfaceBitsPadding = 2

Application::onConfigure の例

// Set the size of the padding to 2 bits.
configuration.defaultSurfaceProperties.bitsPadding = 2;

SurfaceColorSpace

Kanzi アプリケーションを表示するハードウェアのために OpenGL の初期化を有効にすることができます。

application.cfg で

SurfaceColorSpace = colorSpace

Application::onConfigure で

configuration.defaultSurfaceProperties.colorSpace = colorSpace;

コマンドラインで

-surface-color-space=colorSpace

値

colorSpace

アプリケーションを表示するハードウェアのためにOpenGLの初期化を有効にします。

  • sRGBカラースペースを使用するには:

    これはデフォルトです。

    アプリケーションがリニアカラーワークフローを使用している場合、このオプションを使用します。このワークフローでは、Kanzi がリニアカラー空間で色の値に対して操作を行います。

    リニアカラーのワークフローには、以下が必要です:

    • OpenGL 拡張 GL_EXT_sRGB

    • EGL バージョン 1.5 以降、または EGL_KHR_gl_colorspace 拡張機能を持つ EGL バージョン 1.4

    sRGBカラースペースを使用する場合、Kanzi は Kanzi Studio プロジェクトプロパティで Color Workflow プロパティが Linear (デフォルト値)に設定されていることを期待します。

    リニアカラーのワークフローを使用する を参照してください。

  • 未指定のカラースペースを使用するには:

    アプリケーションがレガシーカラーワークフローを使用している場合、このオプションを使用します。このワークフローでは、Kanzi が非線形ガンマカラースペースで色の値に対して操作を行います。

    未指定のカラースペースを使用する場合、Kanzi は Kanzi Studio プロジェクトプロパティで Color Workflow プロパティが Legacy に設定されていることを期待します。

    レガシーカラーワークフローを使用する を参照してください。

  • シェーダーの出力を直接グラフィックスサーフェスに渡すには、

    ターゲットディスプレイに対してカスタムガンマ補正を行いたい場合は、このオプションを使用します。

    Kanzi はシェーダーの書き込みに対して自動出力変換を行わず、代わりにシェーダーがカスタムカラースペース変換を行うことを期待します。

    カスタムカラースペースを使用する場合、Kanzi は Kanzi Studio プロジェクトプロパティで Color Workflow プロパティが Linear (デフォルト値)に設定されていることを期待します。

application.cfg の例

# Set your application to use an unspecified color space.
SurfaceColorSpace = "legacy"

Application::onConfigure の例

// Set your application to use an unspecified color space.
configuration.defaultSurfaceProperties.colorSpace = "legacy";

コマンドライン例

アプリケーションで未指定のカラースペースを使用するように設定します。

-surface-color-space=legacy

カラーワークフロー を参照してください。

SurfaceSamplesAntialiasing

アンチエイリアス処理に使用するサンプル数を設定できます。

application.cfg で

SurfaceSamplesAntialiasing = samples

Application::onConfigure で

configuration.defaultSurfaceProperties.antiAliasing = samples;

値

samples

使用するアンチエイリアスサーフェスサンプルの数。

デフォルトで:

  • Windowsでは、Kanzi Studio Preview と Kanzi Application Player が4サンプルを使用してアンチエイリアスを適用します。Preview と Application Player でアンチエイリアスを設定する を参照してください。

  • 他のプラットフォームでは、Kanzi によりプラットフォームがアンチエイリアスサンプルの数を選択します。

application.cfg の例

# Set the number of anti-aliasing samples to 4.
SurfaceSamplesAntialiasing = 4

Application::onConfigure の例

// Set the number of anti-aliasing samples to 4.
configuration.defaultSurfaceProperties.antiAliasing = 4;

SwapBehavior

バッファスワップ中にバッファを交換するかコピーするかを設定できます。

application.cfg で

SwapBehavior = swap

Application::onConfigure で

configuration.defaultSurfaceProperties.swapBehaviorCopy = swap;

値

swap

バッファスワップ中にバッファをスワップするかコピーするかを設定します。

Kanzi がバッファをコピーするかスワップするかを自動的に選択するようにするには、Application::onConfigure で SwapBehavior::Unspecified を使用します。これはデフォルトの値です。

バッファをコピーするには:

バッファを交換するには:

application.cfg の例

# Copy buffers during buffer swap.
SwapBehavior = "copy"

Application::onConfigure の例

// Copy buffers during buffer swap.
configuration.defaultSurfaceProperties.swapBehaviorCopy = SwapBehavior::Copy;

EGLIMGContextPriority

優先度のヒントを使用してEGL IMGコンテキストを作成できます。デフォルトで、Kanzi はプラットフォームに優先度を選択させます。

application.cfg で

EGLIMGContextPriority = priority

Application::onConfigure で

configuration.defaultSurfaceProperties.priority = priority;

コマンドラインで

-egl-img-context-priority=priority

値

priority

優先度ヒントを使って EGL IMG コンテキストを作成できるようにします。

デフォルトで、Kanzi はプラットフォームが優先順位を選択します。

低優先度に設定するには:

中程度の優先度を設定するには:

高い優先度を設定するには:

application.cfg の例

# Set the EGL IMG context priority to high.
EGLIMGContextPriority = "high"
# Let the platform choose the EGL IMG context priority.
EGLIMGContextPriority = "unspecified"

Application::onConfigure の例

// Set the EGL IMG context priority to high.
configuration.defaultSurfaceProperties.priority = EGLIMGContextPriority::High;

プラットフォームにEGL IMGコンテキストの優先順位を選択させるには:

  • Android WS、Emscripten、QNX EGL、またはX11 EGLグラフィックス出力の場合:

    configuration.systemConfiguration[ConfigurationKeyEGLIMGContextPriority] = "unspecified";
    
  • 他のグラフィックス出力の場合:

    configuration.defaultSurfaceProperties.priority = KZS_SURFACE_PROPERTY_DONT_CARE;
    

コマンドライン例

EGL IMG コンテキストの優先度をハイに設定します。

-egl-img-context-priority=high

アプリケーションウィンドウの位置とサイズ

Kanzi アプリケーションの位置を、画面の左上隅を基準に設定し、アプリケーションウィンドウのサイズをピクセル単位で指定できます。ウィンドウのデフォルトのサイズは640x480ピクセルで、デバイス画面の中央に配置されます。

アプリケーションウィンドウを固定サイズにする場合、サイズ変更可能にする場合、全画面表示する場合、または境界線なしで表示する場合は、WindowStyle を参照してください。

アプリケーションウィンドウが表示されるデフォルトのディスプレイを設定するには、DefaultDisplayIndex を参照してください。

application.cfg で

WindowX = positionX

WindowY = positionY

WindowWidth = width

WindowHeight = height

WindowOrder = order

Application::onConfigure で

configuration.defaultWindowProperties.x = positionX;

configuration.defaultWindowProperties.y = positionY;

configuration.defaultWindowProperties.width = width;

configuration.defaultWindowProperties.height = height;

configuration.defaultWindowProperties.order = order;

configuration.systemConfiguration[ConfigurationKeyDefaultWindowX] = "positionX";

configuration.systemConfiguration[ConfigurationKeyDefaultWindowY] = "positionY";

configuration.systemConfiguration[ConfigurationKeyDefaultWindowWidth] = "width";

configuration.systemConfiguration[ConfigurationKeyDefaultWindowHeight] = "height";

configuration.systemConfiguration[ConfigurationKeyDefaultWindowOrder] = "order";

バリュー (Value)

positionX

画面の左上隅からアプリケーションウィンドウの左上隅までの水平方向の距離 (ピクセル単位)。ウィンドウをデバイス画面の左に配置するには、0 を使用します。

positionY

画面の左上隅からアプリケーションウィンドウの左上隅までの垂直方向の距離 (ピクセル単位)。ウィンドウをデバイス画面の上部に配置するには、0 を使用します。

width

ウィンドウの幅 (ピクセル単位)。

height

ウィンドウの高さ (ピクセル単位)。

order

アプリケーションウィンドウの Z オーダー (10 進数または 16 進数形式)。複数のアプリケーションを同時に実行する場合、このパラメーターを使用して Kanzi アプリケーションを配置できます。このパラメーターの値はターゲットプラットフォームによって異なります。デフォルトでは、Kanzi は値を NativeWindowProperties::WindowPositionSpecifiers::WindowPositionUnspecified に設定し、この場合オーダーは設定されません。

application.cfg の例

# 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

Application::onConfigure の例

// 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 アプリケーションで使用するグラフィックスカードを設定できます。

application.cfg で

DeviceIdentifier = identifier

Application::onConfigure で

configuration.defaultDesktopProperties.deviceIdentifier = identifier;

バリュー (Value)

identifier

Kanzi アプリケーションで使用したいグラフィックスカードの識別子。GBM のデフォルト値は /dev/dri/card0 です。

application.cfg の例

# Sets Kanzi to use the graphics card at /dev/dri/card1.
DeviceIdentifier = /dev/dri/card1

Application::onConfigure の例

// 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 で設定します。

application.cfg で

QnxContextType = contextType

Application::onConfigure で

configuration.defaultDesktopProperties.contextFlags = contextType | contextType | contextType...;

コマンドラインで

-qnx-context-type=contextType

バリュー (Value)

contextType

Kanzi アプリケーションで使用する QNX コンテキストのタイプ。デフォルト値は SCREEN_APPLICATION_CONTEXT です。

アプリケーションでは次のコンテキストを使用するように設定できます。

  • SCREEN_APPLICATION_CONTEXT

  • SCREEN_WINDOW_MANAGER_CONTEXT

  • SCREEN_INPUT_PROVIDER_CONTEXT

  • SCREEN_POWER_MANAGER_CONTEXT

  • SCREEN_DISPLAY_MANAGER_CONTEXT

  • SCREEN_INPUT_MANAGER_CONTEXT

  • SCREEN_BUFFER_PROVIDER_CONTEXT

application.cfg の例

# Sets Kanzi to use the SCREEN_DISPLAY_MANAGER_CONTEXT context type.
QnxContextType = SCREEN_DISPLAY_MANAGER_CONTEXT

Application::onConfigure の例

// 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 アプリケーションを境界線のないウィンドウ、固定サイズのウィンドウ、またはデバイス画面全体を占有するウィンドウで起動するように設定できます。

アプリケーションウィンドウの位置とサイズを設定するには、アプリケーションウィンドウの位置とサイズ を参照してください。

application.cfg で

WindowStyle = "style"

Application::onConfigure で

configuration.defaultWindowProperties.style = style;

バリュー (Value)

style

境界線もその他の装飾もない、ユーザーがサイズを変更できないウィンドウを設定するには:

ユーザーがサイズを変更できないウィンドウを設定するには:

デバイス画面全体を占めるウィンドウを設定するには:

ユーザーがサイズを変更できるウィンドウを設定するには:

application.cfg の例

# Launch the application in a window that occupies the whole screen of the device.
WindowStyle = "fullscreen"

Application::onConfigure の例

// 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 を参照してください。

application.cfg で

DefaultDisplayIndex = index

Application::onConfigure で

configuration.defaultWindowProperties.defaultDisplayIndex = index;

バリュー (Value)

index

ディスプレイのインデックス番号。デフォルトで、値は0です。

application.cfg の例

# Sets the second display as the default display for the full-screen application window.
DefaultDisplayIndex = 1

Application::onConfigure の例

// Sets the second display as the default display for the full-screen application window.
configuration.defaultWindowProperties.defaultDisplayIndex = 1;

WindowBufferCount

ターゲットデバイスのウィンドウ処理システムでウィンドウバッファ数の設定がサポートされている場合、Kanzi アプリケーションウィンドウが使用するネイティブウィンドウバッファの数を設定できます。例えば、ルネサスのウィンドウマネージャーやQNX Screenはウィンドウバッファ数の設定をサポートしています。

application.cfg で

WindowBufferCount = value

Application::onConfigure で

configuration.defaultWindowProperties.bufferCount = value;

値

value

Kanzi アプリケーションウィンドウで使用されるネイティブウィンドウバッファの数。デフォルト値は0で、Kanzi をターゲットデバイスのネイティブウィンドウシステムによって提供されるデフォルト値を使用するように設定します。

application.cfg の例

# Set the number of native window buffers used by the Kanzi application window to 3.
WindowBufferCount = 3

Application::onConfigure の例

// Set the number of native window buffers used by the Kanzi application window to 3.
configuration.defaultWindowProperties.bufferCount = 3;

GroupName

QNX など、ウィンドウグループ名を使用するウィンドウシステムを備えたプラットフォームでは、アプリケーションウィンドウグループのグループ名を設定できます。複数の Kanzi アプリケーションを実行する場合は、各 Kanzi アプリケーションでウィンドウグループに一意の名前を設定してください。

Application::onConfigure で

configuration.defaultWindowProperties.groupName = "value";

値

value

Kanzi アプリケーションウィンドウグループの名前。

Application::onConfigure の例

// Set the Kanzi application window group name to Cluster.
configuration.defaultWindowProperties.groupName = "Cluster";

ウィンドウタイトル

Kanzi のウィンドウタイトルを設定できます。デフォルトのウィンドウタイトルは "Kanzi" です。

application.cfg で

WindowTitle = windowTitle

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyDefaultWindowTitle] = windowTitle;

コマンドラインで

-window-title=windowTitle

application.cfg の例

# Sets "kanzi" as window title.
WíndowTitle = kanzi

Application::onConfigure の例

// 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 設定を使用して設定できます。アプリケーションウィンドウの位置とサイズ を参照してください。

application.cfg で

QnxPipelineID = value

コマンドラインで

-qnx-pipeline-id=value

値

value

QNX Screen パイプライン ID を含む整数値。デフォルトで、Kanzi アプリケーションはパイプライン ID を設定しません。

コマンドラインで設定した値は、application.cfg で設定した値よりも優先されます。

application.cfg の例

# Sets the QNX Screen pipeline ID to 1.
QnxPipelineID = 1

コマンドライン例

QNX Screen パイプライン ID を 1 に設定します。

-qnx-pipeline-id=1

QnxWindowSelfLayout

Kanzi アプリケーションウィンドウの場合、セルフレイアウトの QNX Screen プロパティをプログラムで設定できます。このプロパティを使用すると、通常はウィンドウマネージャーでしか変更できないプロパティを設定できます。

Application::onConfigure で

m_applicationProperties.defaultWindowProperties.selfLayout = selfLayout;
configuration.systemConfiguration[ConfigurationKeyDefaultQnxWindowSelfLayout] = selfLayout;

値

selfLayout

SCREEN_PROPERTY_SELF_LAYOUT が true (1) に設定されている場合にのみ、オーナーは特定のプロパティを設定できます。影響を受けるプロパティの一覧については、QNX Screen property types を参照してください。

Application::onConfigure の例

// To enable self layout for this window.
m_applicationProperties.defaultWindowProperties.selfLayout = 1;
configuration.systemConfiguration[ConfigurationKeyDefaultQnxWindowSelfLayout] = "1";

application.cfg の例

# Sets the QNX window self layout to true.
QnxWindowSelfLayout = 1

コマンドライン例

このウィンドウのセルフレイアウトを有効にします。

-qnx-window-self-layout=1

QnxUsageFlags

Kanzi アプリケーションウィンドウの場合、QNX Screen プロパティの使用フラグをプログラムで設定できます。スクリーン使用フラグを使用すると、割り当てられた QNX ウィンドウバッファを制限することができます。

Application::onConfigure で

m_applicationProperties.defaultWindowProperties.usageFlags = usageFlags;

値

usageFlags

利用可能な値については、QNX Screen usage flags を参照してください。

Application::onConfigure の例

// 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

application.cfg で

EGLGraphicsFormatID = value

コマンドラインで

-egl-graphics-format-id=value

-enum-egl-configs

値

value

EGLグラフィックフォーマットIDを含む整数値。デフォルトで、Kanzi アプリケーションはEGLグラフィックフォーマットIDを設定しません。

コマンドラインで設定した値は、application.cfg で設定した値よりも優先されます。

application.cfg の例

# 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

application.cfg で

EGLContextClientVersion = value

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyEGLContextClientVersion] = value;

コマンドラインで

-egl-context-client-version=value

値

value

Kanzi が使用を試みる EGL コンテキストクライアントバージョン:

application.cfg の例

# Sets Kanzi to use ES2 context client version.
EGLContextClientVersion = es2

Application::onConfigure の例

// Sets Kanzi to use ES2 context client version.
configuration.systemConfiguration[ConfigurationKeyEGLContextClientVersion] = "es2";

コマンドライン例

ES2 コンテキストクライアントバージョンを使用するように Kanzi を設定します。

-egl-context-client-version=es2

入力処理

アプリケーションがタッチおよびポインター入力をどのように処理するかを定義できます。デバイスでアプリケーションを実行する際に、デバイスのポインターに反応するか、タッチスクリーンを使用するか、またはその両方を設定できます。また、入力イベント座標の変換行列を設定することもできます。

Kanzi アプリケーションはデフォルトで入力を処理します。アプリケーションでの入力処理を無効にするには、Application::setScreenOverride() 関数を空の実装でオーバーライドしてください。入力処理の無効化 を参照してください。

InputTransform

入力イベント座標の変換行列を設定できます。この変換は入力イベント座標にのみ影響し、Kanzi アプリケーション画面の向きには影響しません。例えば、アプリケーション画面に対してタッチスクリーンを回転させるためにこれを使用します。

application.cfg で

InputTransform = transformation

Application::onConfigure で

configuration.defaultEventSourceProperties.transformation = transformation;

値

transformation

タッチスクリーンの変換マトリックス。

application.cfg の例

# Rotate a touch screen sized 1280x720 pixels by 180 degrees.
InputTransform = -1, 0, 0, 0, -1, 0, 1280, 720, 1

Application::onConfigure の例

// Rotate a touch screen sized 1280x720 pixels by 180 degrees.
configuration.defaultEventSourceProperties.transformation = Matrix3x3::createTranslation(1280.0f, 720.0f) * Matrix3x3::createRotationInDegrees(180.0f);

例では、以下の式を使って変換マトリックスを計算しています。

\[\begin{split}\begin{bmatrix} 1 & 0 & 1280\\ 0 & 1 & 720\\ 0 & 0 & 1 \end{bmatrix} * \begin{bmatrix} cos(\pi) & -sin(\pi) & 0\\ sin(\pi) & cos(\pi) & 0\\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} -1 & 0 & 1280\\ 0 & -1 & 720\\ 0 & 0 & 1 \end{bmatrix}\end{split}\]

InputTranslation

Kanzi がポインターおよびタッチイベントをどのように変換するかを設定できます。

application.cfg で

InputTranslation = translation

Application::onConfigure で

configuration.defaultEventSourceProperties.translation = translation;

値

translation

ポインタイベントとタッチイベントの変換。

どんな変換も適用しないようにするには:

ポインタイベントをタッチイベントに変換するには:

ポインタイベントをタッチイベントに変換し、ポインタイベントを維持するには:

タッチイベントをポインタイベントに変換するには:

タッチイベントをポインタイベントに変換して、タッチイベントを維持するには:

application.cfg の例

# Translate pointer events to touch events.
InputTranslation = pointertotouch

Application::onConfigure の例

// Translate pointer events to touch events.
configuration.defaultEventSourceProperties.translation = TranslatePointerToTouch;

InputDiscardPointer

アプリケーションがデバイスのポインタに反応するかどうかを設定できます。

application.cfg で

InputDiscardPointer = value

Application::onConfigure で

configuration.defaultEventSourceProperties.discardPointerEvents = value;

値

value

0

ポインタ入力を無視しません。デフォルト値。

1

ポインタ入力を無視します。

application.cfg の例

# Ignore pointer input.
InputDiscardPointer = 1

Application::onConfigure の例

// Ignore pointer input.
configuration.defaultEventSourceProperties.discardPointerEvents = 1;

InputDiscardTouch

アプリケーションがタッチ入力に反応するかどうかを設定できます。

application.cfg で

InputDiscardTouch = value

Application::onConfigure で

configuration.defaultEventSourceProperties.discardTouchEvents = value;

値

value

0

タッチ入力を無視しません。デフォルト値。

1

タッチ入力を無視します。

application.cfg の例

# Ignore touch input.
InputDiscardTouch = 1

Application::onConfigure の例

// Ignore touch input.
configuration.defaultEventSourceProperties.discardTouchEvents = 1;

Linux 上の入力イベントデバイス

Kanzi がリッスンする入力イベントデバイスは、ネイティブウィンドウシステムが入力デバイスの処理を提供しないLinuxポートで設定できます。

この方法で、Kanzi はオペレーティングシステムによって提供される入力イベントデバイスから直接イベントを受け取ることができます。

たとえば、Vivante fbdev および WSEGL ポートでは、Kanzi がリッスンする入力イベントデバイスを構成できます。X11 および Wayland ポートでは、ネイティブウィンドウシステムが入力デバイスを処理します。

Kanzi はデフォルトで、/dev/input ディレクトリ内のeventNという名前のすべての入力イベントデバイスをリッスンします。ここで、Nは整数です。

application.cfg で

InputEventDevice = path

Application::onConfigure で

configuration.defaultEventSourceProperties.inputEventDevice = path;

値

path

1 つ以上の入力イベントデバイスへのフルパス。複数のパスのリストはセミコロンで区切ります。

application.cfg の例

# 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"

Application::onConfigure の例

// 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 に影響します。

application.cfg で

PlatformLoggingEnabled = value

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyPlatformLoggingEnabled] = value;

コマンドラインで

-log-platform

値

false

プラットフォームレイヤーの追加ログを無効にします。デフォルト値。

true

プラットフォームレイヤーの追加ログを有効にします。

application.cfg の例

# Sets Kanzi to produce additional logs for the Platform layer.
PlatformLoggingEnabled = true

Application::onConfigure の例

// Sets Kanzi to produce additional logs for the Platform layer.
configuration.systemConfiguration[ConfigurationKeyPlatformLoggingEnabled] = true;

コマンドライン例

プラットフォームレイヤーの追加ログを出力するように Kanzi を設定します。

-log-platform

Wayland構成

Waylandで Kanzi を使用する場合、Wayland固有のパラメータを構成できます。

Waylandシェル

Waylandシェル Kanzi が使用するものを設定できます。

application.cfg で

WaylandShell = shell

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyWaylandShell] = shell;

コマンドラインで

-wayland-shell=shell

値

shell

Kanzi が使用しようとするシェル:

application.cfg の例

# Sets Kanzi to use the IVI shell.
WaylandShell = ivi

Application::onConfigure の例

// Sets Kanzi to use the IVI shell.
configuration.systemConfiguration[ConfigurationKeyWaylandShell] = "ivi";

コマンドライン例

Kanzi が IVI シェルを使用するように設定します。

-wayland-shell=ivi

Wayland入力モード

ポインターおよびタッチ frame() イベントを待ちたくない場合は、Kanzi を設定して入力イベントを即座に処理することができます。

application.cfg で

WaylandInputMode = value

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyWaylandInputMode] = value;

コマンドラインで

-wayland-input-mode=value

値

value

Kanzi が使用しようとする Wayland 入力モード:

application.cfg の例

# Enable immediate input mode.
WaylandInputMode = immediate

Application::onConfigure の例

// Enable immediate input mode.
configuration.systemConfiguration[ConfigurationKeyWaylandInputMode] = "immediate";

コマンドライン例

イミディエイト入力モードを有効にします。

-wayland-input-mode=immediate

Wayland アプリ ID

Kanzi のアプリ ID を設定できます。デフォルトのアプリ ID は "kanzi" です。

application.cfg で

WaylandAppId = appId

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyWaylandAppId] = appId;

コマンドラインで

-wayland-app-id=appId

application.cfg の例

# Sets "kanzi" as app ID.
WaylandAppId = kanzi

Application::onConfigure の例

// Sets "kanzi" as app ID.
configuration.systemConfiguration[ConfigurationKeyWaylandAppId] = "kanzi";

コマンドライン例

アプリ ID として "kanzi" を設定します。

-wayland-app-id=kanzi

Wayland IVI サーフェス ID

Wayland IVIシェルを使用する場合、Kanzi が使用するIVIサーフェスIDを設定できます。

application.cfg で

WaylandIviSurfaceId = id

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyWaylandIviSurfaceId] = id;

コマンドラインで

-wayland-ivi-surface-id=id

値

id

Kanzi が使用しようとする IVI サーフェス ID。

application.cfg の例

# Sets IVI surface ID to 4000.
WaylandIviSurfaceId = 4000

Application::onConfigure の例

// 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 が使用するかを設定できます。

application.cfg で

WaylandIviLayerId = id

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyWaylandIviLayerId] = id;

コマンドラインで

-wayland-ivi-layer-id=id

値

id

Kanzi が使用しようとする IVI レイヤー ID。

application.cfg の例

# Sets IVI layer ID to 4000.
WaylandIviLayerId = 4000

Application::onConfigure の例

// Sets IVI layer ID to 4000.
configuration.systemConfiguration[ConfigurationKeyWaylandIviLayerId] = 4000;

コマンドライン例

IVI レイヤー ID を 4000 に設定します。

-wayland-ivi-layer-id=4000

Wayland IVI サーフェスの不透明度

Kanzi IVIサーフェスの不透明度を設定できます。

application.cfg で

WaylandIviSurfaceOpacity = opacity

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyWaylandIviSurfaceOpacity] = opacity;

コマンドラインで

-wayland-ivi-surface-opacity=opacity

値

opacity

Kanzi が使用する IVI サーフェスの不透明度は、0..1 の範囲です。

  • 1は、サーフェスを完全に不透明に設定します。デフォルト値です。

  • 0は、サーフェスを完全に透明に設定します。

application.cfg の例

# Sets the IVI surface to be fully transparent.
WaylandIviSurfaceOpacity = 0

Application::onConfigure の例

// Sets the IVI surface to be fully transparent.
configuration.systemConfiguration[ConfigurationKeyWaylandIviSurfaceOpacity] = 0;

コマンドライン例

IVI サーフェスを完全に透明に設定します。

-wayland-ivi-surface-opacity=0

Wayland IVI レイヤーの不透明度

Kanzi IVIレイヤーの不透明度を設定できます。

application.cfg で

WaylandIviLayerOpacity = opacity

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyWaylandIviLayerOpacity] = opacity;

コマンドラインで

-wayland-ivi-layer-opacity=opacity

値

opacity

Kanzi が使用する IVI レイヤーの不透明度、範囲は 0..1:

  • 1はレイヤーを完全に不透明に設定します。デフォルト値です。

  • 0はレイヤーを完全に透明に設定します。

application.cfg の例

# Sets the IVI layer to be fully transparent.
WaylandIviLayerOpacity = 0

Application::onConfigure の例

// Sets the IVI layer to be fully transparent.
configuration.systemConfiguration[ConfigurationKeyWaylandIviLayerOpacity] = 0;

コマンドライン例

IVI レイヤーを完全に透明に設定します。

-wayland-ivi-layer-opacity=0

Wayland IVI サーフェスの可視性

Kanzi IVIサーフェスの可視性を設定できます。

application.cfg で

WaylandIviSurfaceVisibility = visibility

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyWaylandIviSurfaceVisibility] = visibility;

コマンドラインで

-wayland-ivi-surface-visibility=visibility

値

visibility

Kanzi が使用する IVI サーフェスの可視性:

  • 1 は Kanzi IVI サーフェスを表示します。デフォルト値です。

  • 0は Kanzi IVIサーフェスを非表示にします。

application.cfg の例

# Hides the Kanzi IVI surface.
WaylandIviSurfaceVisibility = 0

Application::onConfigure の例

// Hides the Kanzi IVI surface.
configuration.systemConfiguration[ConfigurationKeyWaylandIviSurfaceVisibility] = 0;

コマンドライン例

Kanzi IVI サーフェスを非表示にします。

-wayland-ivi-surface-visibility=0

Wayland IVI レイヤーの可視性

Kanzi IVIレイヤーの可視性を設定できます。

application.cfg で

WaylandIviLayerVisibility = visibility

Application::onConfigure で

configuration.systemConfiguration[ConfigurationKeyWaylandIviLayerVisibility] = visibility;

コマンドラインで

-wayland-ivi-layer-visibility=visibility

値

visibility

Kanzi が使用する IVI レイヤーの可視性:

  • 1 は Kanzi IVI レイヤーを表示します。デフォルト値です。

  • 0は Kanzi IVIレイヤーを非表示にします。

application.cfg の例

# Hides the Kanzi IVI layer.
WaylandIviLayerVisibility = 0

Application::onConfigure の例

// 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オブジェクトに割り当てるメモリの最大量をバイト単位で設定できます。

application.cfg で

LibJPEGMaxMemory = bytes

Application::onConfigure で

configuration.imageLoad.libJPEGMaxMemory = bytes;

値

bytes

libjpegでJPEGオブジェクトに割り当てる最大バイト数。

Kanzi はこの値を libjpeg の jpeg_memory_mgr::max_memory_to_use パラメータに渡します。この値は仮想配列バッファに使用されるスペースにのみ影響し、保証された最大値ではなく、あくまで参考値です。

デフォルト値0は、割り当てるメモリの量に制限を設けません。

application.cfg の例

# Sets the libjpeg memory allocation limit to 2 MB (2,000,000 bytes).
LibJPEGMaxMemory = 2000000

Application::onConfigure の例

// 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メガバイトです。

application.cfg で

LibPNGChunkCacheMax = chunks

LibPNGChunkMallocMax = bytes

Application::onConfigure で

configuration.imageLoad.libPNGChunkCacheMax = chunks;

configuration.imageLoad.libPNGChunkMallocMax = bytes;

値

chunks

libpngによって保存される補助チャンクの最大数。

Kanzi はこの値を libpng の png_set_chunk_cache_max() 関数に渡します。

bytes

IDAT以外のチャンクが占有できるメモリの最大量(バイト単位)。

Kanzi はこの値を libpng の png_set_chunk_malloc_max() 関数に渡します。

application.cfg の例

# 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

Application::onConfigure の例

// 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 設定を使用します。

application.cfg で

ShaderBinaryCacheDirectory = path

Application::onConfigure で

configuration.shaderBinaryCacheDirectory = path;

値

path

シェーダーバイナリのキャッシュディレクトリへのパス。アプリケーションの作業ディレクトリからの絶対パスまたは相対パスを使用できます。

application.cfg の例

# Sets the shader binary cache directory to /tmp/shader-cache/.
ShaderBinaryCacheDirectory = "/tmp/shader-cache/"

Application::onConfigure の例

// 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 プロパティが有効になっていることを確認してください。これはデフォルトの値です。

application.cfg で

ShaderBinaryCacheEnabled = value

Application::onConfigure で

configuration.shaderBinaryCacheEnabled = value;

値

true

シェーダーバイナリをキャッシュします。

false

シェーダーバイナリをキャッシュしない。デフォルト値。

application.cfg の例

# Enables the caching of shader binaries.
ShaderBinaryCacheEnabled = true

Application::onConfigure の例

// Enables the caching of shader binaries.
configuration.shaderBinaryCacheEnabled = true;

ShaderBinaryCacheCollisionCheck

デフォルトで、Kanzi はキャッシュされたシェーダーバイナリのファイル名にシェーダーソースコードのハッシュのみを保存します。Kanzi はその後、そのハッシュを要求されたシェーダーソースから導出されたハッシュ値と比較します。ハッシュの衝突は稀ですが、発生する可能性があり、誤ったシェーダーの使用につながります。

ハッシュの衝突を防ぐために、アプリケーションを設定してシェーダーのソースコードを保存し、シェーダーが同一であることを確認するために完全な文字列比較を行うことができます。もし2つのシェーダーが同じハッシュ値を生成した場合、アプリケーションは警告をログに記録します。

ディスクスペースを節約し、パフォーマンスを最適化するために、ハッシュ衝突チェックは開発中のみ有効にしてください。

application.cfg で

ShaderBinaryCacheCollisionCheck = value

Application::onConfigure で

configuration.shaderBinaryCacheCollisionCheck = value;

値

true

キャッシュされたシェーダーのハッシュ衝突を確認します。

開発中のみこれを使用してください。

false

キャッシュされたシェーダーでハッシュの衝突をチェックしない。デフォルト値。

application.cfg の例

# Enables checking for hash collisions in cached shaders.
ShaderBinaryCacheCollisionCheck = true

Application::onConfigure の例

// Enables checking for hash collisions in cached shaders.
configuration.shaderBinaryCacheCollisionCheck = true;

ShaderBinaryCacheReadOnly

デフォルトで、Kanzi はシェーダーバイナリキャッシュに書き込むことができます。アプリケーションが本番環境の準備が整ったら、シェーダーバイナリキャッシュを読み取り専用にすることができます。

application.cfg で

ShaderBinaryCacheReadOnly = value

Application::onConfigure で

configuration.ShaderBinaryCacheReadOnly = value;

値

true

シェーダーバイナリキャッシュディレクトリを読み取り専用にします。

アプリケーションが本番環境の準備が整ったときに、これを使用できます。

false

シェーダーバイナリキャッシュディレクトリを書き込み可能にします。デフォルト値。

application.cfg の例

# Makes the shader binary cache read-only.
ShaderBinaryCacheReadOnly = true

Application::onConfigure の例

// Makes the shader binary cache read-only.
configuration.ShaderBinaryCacheReadOnly = true;

関連項目

アプリケーション開発

ベストプラクティス

リソースを並列でロードする

kzb ファイル