Kanzi 3.9.0 マイグレーションガイド

このマイグレーションガイドを使用して、Kanzi アプリケーションを Kanzi 3.8.0 から Kanzi 3.9.0 に更新してください。

JavaScript機能の削除

Kanzi は V8 JavaScript エンジンを含まなくなり、Kanzi Studio は Execute Script アクションを含まなくなりました。これにより、Kanzi アプリケーションで JavaScript スクリプトを使用することができました。

Kanzi 3.9.0で Kanzi Studio プロジェクトを開くと、Execute Script アクションを使用している場合、Kanzi Studio はこのアクションを使用しているノードを無効としてマークし、赤い文字で表示しますが、削除はしません。これにより、これらのアクションとそのスクリプトからの機能を評価し、他の Kanzi 機能を使用してその機能を手動で再現することができます。

アプリケーションコードから削除します:

  • #include <kanzi/js/module.hpp>

  • V8Module::registerModule(domain);

64ビット Kanzi Studio プレビュー

Kanzi Studio プレビューは、現在64ビットアーキテクチャを使用しています。Kanzi アプリケーションを移行するには:

  • Kanzi Studio プロジェクトを Kanzi Studio 3.9.0 で開く前にバックアップしてください。Kanzi Studio はプロジェクトを自動的に不可逆的に更新します。

    これらの項目のデフォルト値を変更した場合、Kanzi Studio プロジェクトを手動で移行する必要があります。

    • Application/src/plugin/CMakeLists.txt で、${CMAKE_VS_PLATFORM_NAME} を Kanzi 固有の ${PLATFORM_TARGET} に変更し、Win64 に評価されるようにします。

    • Application/generate_cmake_vs2017_solution.bat に -A x64 パラメーターを追加します。

      たとえば、変更

      cmake -S . -B build_vs2017 -G "Visual Studio 15 2017"
      

      終点

      cmake -S . -B build_vs2017 -G "Visual Studio 15 2017" -A x64
      
    • Properties の各プラグインに対して、Library > Kanzi Engine Plugins の Kanzi Studio で、Kanzi Engine プラグインの64ビットバージョンの場所にプラグインパスを更新します。

  • Kanzi Engine プラグインを 64 ビット構成でリビルドし、そのようなプラグインを使用する Kanzi Studio プロジェクトで、Library > Kanzi Engine Plugins を右クリックして各プラグインを選択し、Update Kanzi Engine Plugin を選択します。

MainLoopScheduler サブシステムの紹介

  • クラス SuspensionManager と FPSContraints が削除されました。これらのクラスからの依然として関連性のある機能は、現在 MainLoopScheduler に組み込まれています。

  • 廃止されたタスクスケジューラの実装 KzuTaskScheduler と Scheduler を削除しました。

  • 削除されたクラス MainLoopTaskProfiler、MainLoopTaskSample、MainLoopTaskProfilerCategories、および MainLoopTaskProfileRegistry。MainLoopProfiler と MainLoopProfilingSampleData に置き換えられました。

  • クラス Watermark と SplashScreen が削除されました。

  • Application クラス:

    • 列挙型 State を MainLoopScheduler::State に移動しました。

    • ステート Sleeping を Paused に名前変更しました。

    • ステート Uninitialized と Error を削除しました。

    • sleep() を pause() に、wakeup() を resume() に名前を変更しました。

    • onSleep()、onIdle()、および onWakeup() を削除しました。

    • onPause()、onResumeCheck()、および onResume() が導入され、Kanzi は Paused 状態へのエントリー時、停止したループの各イテレーション、および Paused 状態からの退出時にそれぞれ呼び出されます。onPause() と onResume() は、以前のバージョンで sleep() と wakeup() の呼び出し内で直接呼び出されていた onSleep() と onWakeup() と同等ではないことに注意してください。onResumeCheck() もonIdle()と同等ではなく、現在はウェイクアップイベントのためにイベントキューをチェックするデフォルトの実装を保持しています。

    • runOverride()、updateOverride()、renderOverride()、suspendOverride()、yieldOverride()、sleepOverride()、および wakeupOverride() を削除しました。

    • updateOverride() を削除しました。onUpdate() は非推奨ですが、まだ削除されていません。代わりに、User ステージのメインループにタスクを挿入することを推奨します。

    • onPreRender() と onPostRender() を削除しました。代わりに、Render ステージの前または後にタスクを挿入してください。

    • initializeWatermark() と initializeSplashScreen() を削除しました。

    • getLastFrameTime() と getStopWatch() を削除しました。代わりに MainLoopScheduler タイミングインターフェース getLastFrameDuration() を使用してください。

    • reloadProject() を削除しました。

    • projectReloaded() と onProjectInitialized() を削除しました。

    • executePendingChanges() を loadStartupKzb() にリネームしました。

    • suspend()、yield()、idle()、および idleLoop() が削除されました。この機能は現在、MainLoopScheduler によって実装されています。

Timer 機能

Timer 機能は現在 MainLoopScheduler サブシステムの一部であり、削除された Timer サブシステムを置き換えます。

これで、タイマータスクをメインループに直接追加します。

  • ステージの前にタイマータスクを追加するには、MainLoopScheduler::prependTimer を使用します。

  • ステージの後にタイマータスクを追加するには、MainLoopScheduler::appendTimer を使用します。

  • タイマーを削除するには、MainLoopScheduler::removeTimer を使用します。

タイマーには、次の再発オプションがあります:

  • Kanzi は、追加されてから指定された時間が経過すると、MainLoopScheduler::TimerRecurrence::OneTime タイマーのタスクを一度実行します。

  • Kanzi は、指定された間隔で MainLoopScheduler::TimerRecurrence::Recurring タイマーのタスクを定期的に実行します。メインループの反復間に複数の間隔が経過した場合、Kanzi は繰り返しタスクを一度だけ実行しますが、コールバックインターフェースを通じて繰り返し回数を提供します。

タイマーはもはやメッセージ引数やプロパティを使用せず、代わりにタイマーコールバックが直接、タイマーの間隔の倍数に切り下げられた経過時間と経過した間隔の数を引数として受け取ります。

パフォーマンス HUD (Performance HUD)

Performance HUD を MainLoopScheduler で動作するように更新しました。

  • ApplicationProperties::profilingCategoryFilter から show オプションを削除しました。

  • アプリケーションプロパティ PerformanceInfoProperties::graphFilter を導入しました。これは、Performance HUD に表示するプロファイリンググラフのタスクをセミコロンで区切ったリストです。

バインディング (Bindings)

Kanzi の以前のバージョンでは、バインディングがソース値としてソースノードに存在しないプロパティタイプを使用した場合、Kanzi はそのバインディングを適用しませんでした。現在では、ソースノードにプロパティタイプが存在しない場合、バインディングはそのプロパティタイプのデフォルト値を使用します。

リソースマネージャー

ResourceManager ProtocolHandler シグネチャをモダン化しました。

  • 関数ポインタの代わりに、現在は std::function を使用します。

  • userdata 引数を削除しました。これで、ラムダキャプチャなどを使用して、関数で追加の状態をキャプチャできるようになりました。

DataObject クラス

DataObject クラスは、もはやパブリックコンストラクタを持ちません。これらを構築するには、静的な create 関数を使用する必要があります。

Kanzi 3.8.0

Kanzi 3.9.0

DataObject::DataObject(Domain*, string_view)

DataObject::create(Domain*, string_view)

DataObjectBool::DataObjectBool(Domain*, string_view)

DataObjectBool::create(Domain*, string_view)

DataObjectInt::DataObjectInt(Domain*, string_view)

DataObjectInt::create(Domain*, string_view)

DataObjectReal::DataObjectReal(Domain*, string_view)

DataObjectReal::create(Domain*, string_view)

DataObjectString::DataObjectString(Domain*, string_view)

DataObjectString::create(Domain*, string_view)

カラースペース (Color space)

線形カラー ワークフローが導入され、これが今後デフォルトのカラースペースとなります。アプリケーションで従来のカラースペース(非線形ガンマ)を引き続き使用したい場合は、そのアプリケーションの application.cfg ファイルに次を追加してください。

SurfaceColorSpace = legacy

注釈

linux_imx8_wayland_aarch64 プラットフォームでは、Kanzi アプリケーションはレガシーカラースペースでのみ動作します。

カラーワークフロー と サーフェスのプロパティ を参照してください。

Node クラス

  • getRelativePath() の戻り値から末尾の / を削除しました。例えば、my/item/ の代わりに、関数は現在 my/item を返します。

  • Node::PathProperty と Node::getPath() の値に先頭の / を追加して、有効な絶対パスにしました。例えば、Screen/RootPage の代わりに、値は現在 /Screen/RootPage です。

Light ノード

Light ノードから Color Scale (Light::ColorScaleProperty) プロパティを削除しました。ライトの明るさを調整するには、ライトの色プロパティの Intensity (I) を設定します。ライトの明るさを調整する を参照してください。

Kanzi Studio でプロジェクトを開くと、Kanzi Studio はライトプロパティのローカル値を自動的に変換しますが、プロジェクトを Kanzi 3.9.0に変換した後に手動でライトを調整する必要がある場合があります。例えば、プロジェクトにライトの色プロパティをカスタムプロパティタイプにバインドするバインディングが含まれている場合、そのカスタムプロパティタイプの Editor を HDR color editor に設定し、ライトの色を調整してください。

アクティビティシステム

Activity または Activity Host ノードを使用しているアプリケーションの場合、アプリケーションを Kanzi 3.8.0 から 3.9.0 に移行する唯一の方法は、アプリケーションのアクティビティ構造を再作成することです。

アクティビティ構造を再作成する前に、Node Tree からすべての既存の Activity および Activity Host ノードを削除してください。

アクティビティシステムの使用方法を学ぶには:

  • アクティビティシステムのチュートリアルを完了してください。UI構造 を参照してください。

  • アクティビティシステムの詳細について学びます。アクティビティ を参照してください。

APIの変更点

タイプ (Type)

Kanzi 3.8.0

Kanzi 3.9.0

class

CodeBehindBase

CodeBehind

ヘッダーファイル

code_behind_base.hpp

code_behind.hpp

コードビハインド

Kanzi Studio でコードビハインドを使用するアプリケーションのプロジェクトを開くと、コードビハインド機能を移行する前に、Kanzi Studio プレビューを開始できません。

コードビハインドを使用するアプリケーションを移行するには:

  1. Kanzi Studio 3.9.0で、Code Behindを使用するアプリケーションのプロジェクトを開き、Library > Kanzi Engine Plugins でCode Behindプラグイン (<ProjectName>_CodeBehind) を選択し、削除します。

  2. アプリケーションのアクティビティ構造を再作成します。アクティビティシステム を参照してください。

  3. コードビハインドを再追加:

    1. Activity Browser で、コードビハインドを追加したい Activity または Activity Host を右クリックし、Add Code Behind を選択します。

    2. Kanzi 3.8.0で作成したコードビハインド機能をコピーします。

      • Kanzi Studio project Kanzi Studio テンプレートに基づいてアプリケーションを作成する場合、機能をコピーしてください。

        • <ProjectName>/CodeBehind/Application/include から <ProjectName>/CodeBehind/include まで

        • <ProjectName>/CodeBehind/Application/source から <ProjectName>/CodeBehind/source まで

      • Application、Application with data source plugin、または Application with Kanzi Engine plugin Kanzi Studio テンプレートに基づいてアプリケーションを作成する場合は、機能をコピーしてください。

        • <ProjectName>/Tool_project/CodeBehind/Application/include から <ProjectName>/Tool_project/CodeBehind/include まで

        • <ProjectName>/Tool_project/CodeBehind/Application/source から <ProjectName>/Tool_project/CodeBehind/source まで

      コードビハインドファイルの命名規則の変更に注意してください。

      ファイルの目的

      Kanzi 3.8.0

      Kanzi 3.9.0

      モジュール (Module)

      <ProjectName>codebehind_module

      <ProjectName>_code_behind_module

      アクティビティ

      <ActivityName>activitycode

      <ProjectName>_<ActivityName>_activity_code

      アクティビティホスト

      <ActivityHostName>activitycode

      <ProjectName>_<ActivityHostName>_activity_code

  4. <ProjectName>CodeBehind/Application ディレクトリを削除します。

  5. Kanzi Studio でプレビューを再起動します。

コードビハインドを使用したプログラミングアクティビティ を参照してください。

Android Gradle Plugin と Gradle

Kanzi アプリケーションを Android Gradle Plugin 4.2.2 と Gradle 6.7.1 を使用するように移行するには:

  1. Android Studioの android_gradle/app/build.gradle ファイルで、次を置き換えます:

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    

    以下に置き換えます。

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    
  2. android_gradle/build.gradle ファイルで次を置き換えます:

    dependencies {
        classpath 'com.android.tools.build:gradle:<android-studio-version>'
        classpath 'com.rightware.gradle:kanzi:<gradle-plugin-version>'
    }
    

    以下に置き換えます。

    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.2'
        classpath 'com.rightware.gradle:kanzi:0.6.2'
    }
    
  3. android_gradle/gradle/wrapper/gradle-wrapper.properties ファイルで次を置き換えます:

    distributionUrl=https\://services.gradle.org/distributions/gradle-<version>-bin.zip
    

    以下に置き換えます。

    distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
    
  4. android_gradle/gradle.properties ファイルで次を置き換えます:

    org.gradle.jvmargs=-Xmx<size>m
    

    以下に置き換えます。

    org.gradle.jvmargs=-Xmx4608m
    
  5. アプリケーションでGradleを更新するには、次のいずれかを行います。

    • Android Studioで Gradle > Task > build setup > Wrapper を選択します。

    • コマンドラインで実行します:

      ./gradlew wrapper
      

レンダーパス (Render Passes)

フィルタ

フィルタを改良しました。

この表は、Kanzi 3.8.0と3.9.0のフィルタクラスの違いを示しています。

Kanzi 3.8.0

Kanzi 3.9.0

KzuObjectSource

ObjectSource

KzuSortObjectSource

SortObjectSource

KzuCombinerObjectSource

CombinerObjectSource

KzuFilterObjectSource

FilterObjectSource

KzuContainsPropertyFilter

ContainsPropertyFilter

KzuFrustumCullFilter

FrustumCullFilter

KzuLODFilter

削除されました

KzuObjectTypeFilter

ObjectTypeFilter

KzuPropertyIsEqualFilter

PropertyIsEqualFilter

KzuTagFilter

TagFilter

Instantiator ノード

Instantiator ノードをリファクタリングしました。Instantiator ノードは、インスタンス化するノードのローカル変換を保持しなくなりました。インスタンス化は、インスタンス化されたノードから開始されます。Instantiator ノードを使用する を参照してください。

プロジェクトを Kanzi 3.9に移行するには、インスタンス化されたノードから Instantiator ノードに変換を移動するか、代わりにインスタンス化する親ノードを追加する必要があるかもしれません。

テキストレンダリング

テキストレンダリングを実装するノード(TextBlock2D、TextBlock3D、TextBox2D、TextBox3D)のための TextConcept ベースクラスを導入しました。

TextConcept に移動しました。これらのプロパティは、テキストレンダリングを実装するすべてのノードに共通です。

Kanzi 3.8.0

Kanzi 3.9.0

TextBlockConcept::FontColorProperty

TextConcept::FontColorProperty

TextBlockConcept::FontMaterialProperty

TextConcept::FontMaterialProperty

TextBlockConcept::HorizontalPaddingProperty

TextConcept::HorizontalPaddingProperty

TextBlockConcept::RemoveSideBearingsProperty

TextConcept::RemoveSideBearingsProperty

TextBlockConcept::TextProperty

TextConcept::TextProperty

TextBlockConcept::TextHorizontalAlignmentProperty

TextConcept::TextHorizontalAlignmentProperty

TextBlockConcept::TextVerticalAlignmentProperty

TextConcept::TextVerticalAlignmentProperty

TextBlockConcept::VerticalPaddingProperty

TextConcept::VerticalPaddingProperty

TextBlockConcept::OverflowProperty

TextConcept::OverflowProperty

入力とフォーカスの処理

  • キー押下の繰り返し機能を KeyRepeatConcept および KeyRepeatConceptImpl<> から KeyRepeatGenerator に移動しました。

  • KeyInputConcept、KeyInputConceptImpl<>、および KeyInputGestureDetector<> の機能を InputManipulator に移動しました。

  • Enter キーハンドリングメッセージ InputMethod::pressEnterKey、InputMethod::releaseEnterKey、InputMethod::cancelEnterKey、TextBoxConcept::EnterKeyPressedMessage、TextBoxConcept::EnterKeyReleasedMessage、TextBoxConcept::EnterKeyCanceledMessage、TextInputManipulator::EnterKeyPressedMessage、TextInputManipulator::EnterKeyReleasedMessage、および TextInputManipulator::EnterKeyCanceledMessage を削除しました。

  • 入力メソッドアクション処理メッセージ TextBoxConcept::InputMethodActionMessage、TextBoxConcept::InputMethodAvailableMessage、および TextBoxConcept::InputMethodUnavailableMessage を導入しました。

  • メッセージ引数から FocusManager::PreFocusMessageArguments::AcceptFocusProperty を削除しました。ノードにフォーカスを移動できるかどうかを判断するには、フォーカススコープタイプとフォーカスマネジメントに関連するプロパティを使用します。ノードツリー内でフォーカスチェーンのナビゲーションを制限するには、Focus Scope Type プロパティをノードにアタッチし、その値を Fence、Modal、または Popup に設定します。

  • FocusManager::LogicalFocusProperty (Logical Focus)プロパティは非推奨になりました。

    Kanzi Studio は、Logical Focus プロパティを使用するプロジェクトを自動的に変換し、Logical Focus プロパティを Focus Order プロパティが0に設定されたものに置き換えます。この変更により、Focus Order プロパティが0に設定されたノードがフォーカススコープ内の最初のフォーカス可能なノードとして設定されます。フォーカスチェイン内でフォーカスを移動する を参照してください。

  • FocusManager から、方向ナビゲーションに関連するこれらのプロパティとオプションが削除されました。

    • NextFocusNodePathProperty、PreviousFocusNodePathProperty、UpNavigationNodePathProperty、DownNavigationNodePathProperty、LeftNavigationNodePathProperty、および RightNavigationNodePathProperty プロパティ。

    • FocusChainDirection オプション UpFocusable、DownFocusable、LeftFocusable、および RightFocusable。

    ナビゲーションマニピュレータを使用して、方向ナビゲーションを実装します。Navigation Manipulator を使用する を参照してください。

  • これらの FocusManager メソッドをリネームまたは削除しました。

    Kanzi 3.8.0

    Kanzi 3.9.0

    FocusManager::getActiveFocus()

    FocusManager::getFocus()

    FocusManager::trySetActiveFocus()

    FocusManager::trySetFocus()

    FocusManager::tryMoveActiveFocus()

    FocusManager::tryMoveFocus()

    FocusManager::tryMoveActiveFocusForward()

    FocusManager::tryMoveFocusForward()

    FocusManager::tryMoveActiveFocusBackward()

    FocusManager::tryMoveFocusBackward()

    FocusManager::tryMoveActiveFocusUpward()

    削除されました

    FocusManager::tryMoveActiveFocusDownward()

    削除されました

    FocusManager::tryMoveActiveFocusLeft()

    削除されました

    FocusManager::tryMoveActiveFocusRight()

    削除されました

スクロール機能

  • Scroll View 2D ノードと Grid List Box 2D ノードは、デフォルトでユーザーがポインターをドラッグした量と同じだけスクロールします。プロジェクトを Kanzi 3.9.0 に移行するには、Scroll View 2D ノードと Grid List Box 2D ノードで Scroll Sensitivity プロパティ (ScrollViewConcept::SensitivityProperty, GridListBoxConcept::SensitivityProperty) の値を調整します。デフォルト値は 1 です。例えば、ノードをユーザーがポインターをドラッグした量の2倍スクロールさせるには、Scroll Sensitivity プロパティの値を 2 に設定します。

    Kanzi 3.9.0は、Scroll Sensitivity プロパティを負の値に設定したことによって引き起こされる意図しない動作を削除します。Scroll Sensitivity プロパティは、もはや負の値を持つことができません。例えば、3Dモデルを回転させるために使用する Scroll View 2D ノードでスクロールの方向を変更するには、回転をスクロール位置にバインドするバインディングを修正してください。チュートリアル: 3Dモデルを回転させる を参照してください。

  • Scroll View、Grid List Box、および Trajectory List Box 3D ノードでは、Scroll Position プロパティ(ScrollViewConcept::ScrollPositionProperty、GridListBoxConcept::ScrollPositionProperty、TrajectoryListBox3D::ScrollPositionProperty)の値が、ポインタが右下に移動すると減少するようになりました。プロジェクトを Kanzi 3.9.0に移行するには、Scroll View または List Box ノードのスクロール位置をターゲットとするバインディングと Set Property アクションを調整してください。場合によっては、Set Property アクションをバインディングに置き換える必要があります。たとえば、以前のバージョンの Kanzi で Scroll Position プロパティの値を使用して Scroll View ノード内のコンテンツの変換を設定していた場合、Scroll Position プロパティの値を反転させてください。Scroll View ノードの作成 を参照してください。

  • ScrollViewConcept::ScrollAxisProperty (Scroll Axis) プロパティは非推奨になりました。

    Kanzi Studio は、Scroll Axis プロパティを使用するプロジェクトを自動的に変換し、Scroll Axis プロパティを Allowed Scroll Axis プロパティに置き換えます。

  • Scroll View ノードと Grid List Box ノードをスクロールするメッセージをリファクタリングしました。

    Kanzi 3.8.0

    Kanzi 3.9.0

    ScrollViewConcept::ScrollDirectionMessage

    ScrollViewConcept::ScrollDownMessage

    ScrollViewConcept::ScrollUpMessage

    ScrollViewConcept::ScrollLeftMessage

    ScrollViewConcept::ScrollRightMessage

    ScrollViewConcept::ScrollEdgeMessage

    ScrollViewConcept::ScrollHomeMessage

    ScrollViewConcept::ScrollEndMessage

    ScrollViewConcept::ScrollPageMessage

    ScrollViewConcept::ScrollPageDownMessage

    ScrollViewConcept::ScrollPageUpMessage

ListBoxItemContainer プレハブ

ListBoxItemContainer2D と ListBoxItemContainer3D は、ContentLayout2D と ContentLayout3D から継承されるようになりました。

2Dノードキャッシング

これらのプロパティが削除されました:

  • Cache Children (Node2D::CacheChildrenProperty)

    Kanzi は、ノードの子のみをキャッシュすることをサポートしなくなりました。ノード自体をキャッシュせずにその子孫をキャッシュするには、子ノードを別のノードに移動し、そのノードで Caching Mode プロパティを Enabled に設定してください。

  • Cache Result (Node2D::CacheResultProperty)

    Kanzi Studio は、Cache Result プロパティを使用するプロジェクトを自動的に変換し、Caching Mode プロパティに置き換えます。

  • Cache Self (Node2D::CacheSelfProperty)

    Kanzi は、ノードをキャッシュしてもその子孫をキャッシュしないことをサポートしなくなりました。ノードをキャッシュせずにその子孫をキャッシュするには、子孫ノードを別のノードに移動し、キャッシュしたいノードで Caching Mode プロパティを Enabled に設定してください。

2Dノードのキャッシングシステムは、2Dノードのキャッシング を参照してください。

ForwardingAction クラス

ForwardingAction クラスを改善し、派生クラスでのボイラープレートコードの必要性を減らしました。

  • すべてのバインディングランタイムのルックアップコンテキストは、関連するトリガーに自動的にアタッチされるようになりました。派生クラスはこれを行う必要がなくなりました。

  • すべてのメッセージバインディングランタイムのルックアップコンテキストは、関連するトリガーの転送メッセージに自動的にアタッチされるようになりました。派生クラスはこれを行う必要がなくなりました。

リリースノートでは、その他の改善点 を参照してください。

プロファイラカテゴリの作成

プロファイリングカテゴリを作成するには、プロファイリングカテゴリを初期化するために追加のマクロを呼び出す必要があります。この2番目のマクロはcppファイルに配置する必要があります。この新しいマクロは、同じアプリケーションで動的にロードされる複数のライブラリに含めたときにカテゴリが再登録されるのを防ぎます。

プロファイリングカテゴリを作成するには、kzProfilingRegisterExportedCategory と kzProfilingInitializeCategory の両方を使用します。kzProfilingRegisterExportedCategory はhppファイルまたはcppファイルのいずれかに配置できます。kzProfilingInitializeCategory はcppファイルで使用する必要があります。

プロファイリングカテゴリを作成する方法の例については、Kanzi Engine C++ API リファレンス の kzProfilingRegisterExportedCategory のコード例を参照してください。

// Example export/import macro for Windows.
#ifdef USE_SHARED_LIBRARY
#ifdef COMPILE_LIBRARY_CODE
// Compiling shared library: export category to shared library.
#define EXPORT_IMPORT_API __declspec(dllexport)
#else
// Compiling user code: import category from shared library.
#define EXPORT_IMPORT_API __declspec(dllimport)
#endif
#else
// Use empty macro for static linking.
#define EXPORT_IMPORT_API
#endif

#define MY_PROFILING_CATEGORY_EXPORTED kzProfilingCreateCategory(KZ_PROFILING_ENABLED_CATEGORY, "myCategoryExported", KZ_PROFILING_DEFAULT_SAMPLE_BUFFER_SIZE)
kzProfilingRegisterExportedCategory(EXPORT_IMPORT_API, MY_PROFILING_CATEGORY_EXPORTED, KZ_PROFILING_DISABLED_CATEGORY)

// kzProfilingInitializeCategory must be placed in a cpp file.
kzProfilingInitializeCategory(EXPORT_IMPORT_API, MY_PROFILING_CATEGORY_EXPORTED, KZ_PROFILING_DISABLED_CATEGORY)

アプリケーション構成

グラフィックスコンテキストとサーフェスクライアントAPI

application.cfg で使用するこれらの設定とオプションの名前を変更しました。

Kanzi 3.8.0

Kanzi 3.9.0

GraphicsBackend

SurfaceClientAPI、GraphicsContextAPI

opengl

gl

Application::onConfigure() 関数で使用するこれらの設定とオプションの名前を変更しました。

Kanzi 3.8.0

Kanzi 3.9.0

configuration.defaultSurfaceProperties.type

configuration.defaultSurfaceProperties.clientAPI

KZS_SURFACE_TYPE_GL_ONLY

SurfaceClientAPI::OpenGL

KZS_SURFACE_TYPE_GLES_ONLY

SurfaceClientAPI::OpenGLES

KZS_GRAPHICS_CONTEXT_API_WGL

GraphicsContextAPI::WGL

KZS_GRAPHICS_CONTEXT_API_EGL

GraphicsContextAPI::EGL

KZS_GRAPHICS_CONTEXT_API_GLX

GraphicsContextAPI::GLX

グラフィックスライブラリ を参照してください。

バッファスワップの動作

Application::onConfigure() 関数でバッファスワップに使用する設定オプションの名前を変更しました。

Kanzi 3.8.0

Kanzi 3.9.0

KZS_SWAP_BEHAVIOR_DONT_CARE

SwapBehavior::Unspecified

KZS_SWAP_BEHAVIOR_COPY

SwapBehavior::Copy

KZS_SWAP_BEHAVIOR_EXCHANGE

SwapBehavior::Exchange

サーフェスのプロパティ を参照してください。

その他の変更

  • 廃止された Play Animation アクションを削除しました。代わりに Animation Player を使用してください。キーフレームアニメーションの使用 と Kanzi Engine APIを使用してアニメーションとタイムラインを作成する を参照してください。

  • kanzi/core の変更:

    • ScopedRefCounter を kanzi/core/util/scoped_ref_counter.hpp に移動しました。

    • from_chars を kanzi/core/cpp/charconv.hpp に移動しました。

    • KZ_NOT_MOVABLE_NOT_COPYABLE と KZ_MOVABLE_BUT_NOT_COPYABLE を kanzi/core/util/macros.hpp に移動しました。

    • kanzi/core/cpp/iterator.hpp で定義された kzArrayLength を size(array) に置き換えました。

    • std::move を kanzi 名前空間にインポートしました。

    • boost/move/utility.hpp のインクルージョンを削除しました。

    • 削除されたマクロ:

      • KZ_COPY_ASSIGN_REF

      • KZ_RV_REF

      • KZ_MOVE_RET

      • KZ_MOVE_BASE

      • KZ_USE_MOVE_EMULATION

  • KzuBoundingVolume クラスと KzuTransformedBoundingVolume クラスを Box クラスと OrientedBoundingBox クラスに置き換えました。あなたのクラスが Node から派生し、Node::getBoundingVolume 仮想関数をオーバーライドしている場合、Node3D::getBoundingBox 関数を実装する必要があります。Renderer3D 内のバウンディングボックスをレンダリングするための関連ヘルパー関数の名前を変更しました。

  • ActionArgumentType を KzbMemoryParser::ArgumentType に移動しました。

  • KzcHashMap と KzcHashSet を削除しました。代わりに unordered_map と unordered_set を使用してください。

  • KzcDynamicArray を削除しました。代わりに vector を使用してください。

  • KzcMemoryManager を削除しました。代わりに vector、new/delete、new[]/delete[] を使用してください。

  • kzsTimeGetCurrentTimestamp と kzsTimeGetCurrentTimeMicroseconds を削除しました。代わりに kanzi::Clock または std::steady_clock を使用してください。

  • 廃止された内部ビットマップ画像読み込み機能を削除しました。

    • imageLoadPVRTC

    • imageLoadETC

    • imageLoadATC

    • imageLoadASTC

    • imageLoadRaw2D

  • task_dispatcher.hpp を kanzi/core.ui/scheduler から kanzi/core.ui/task_dispatcher に移動しました。

  • rayPickCalculateRay を Camera::calculateCameraRay に置き換えました。

関連項目

Kanzi 3.9.0 リリースノート

既知の問題