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

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

Kanzi ライブラリ

Kanzi ライブラリは、現在 Visual Studio 2013 および 2015 のみで利用可能です。古いプロジェクトの Visual Studio 2010 構成を Visual Studio 2015 構成に置き換えるには、次の手順を実行してください。

  1. プロジェクトのVisual StudioソリューションをVisual Studioで開く:

    1. ソリューションエクスプローラーでプロジェクトを右クリックし、プロパティ > 全般 > プラットフォームツールセットを選択し、Visual Studio 2015 v140 コンパイラが選択されていることを確認します。プロジェクトに Kanzi Engine プラグインが含まれている場合は、プラグインと実行可能プロジェクトに対しても同様に行ってください。

      ../../_images/set-platform-toolset-compiler.png
    2. プロパティマネージャーで2010の構成を2015にリネームします。Visual Studioでは、[表示] > [プロパティマネージャー] または [表示] > [その他のウィンドウ] > [プロパティマネージャー] でプロパティマネージャーを見つけることができます。例えば、「GL_vs2010_Release」構成を「GL_vs2015_Release」にリネームします。

      ../../_images/rename-configurations.png
    3. プロパティマネージャーで、すべてのES_IMG構成を選択し、右クリックしてRemoveを選択します。

    4. 構成マネージャーで2010の構成を2015に名前を変更し、各構成をプロパティマネージャーで名前を変更したVisual Studio 2015の正しい構成を使用するように設定します。

      例えば、Configuration Manager を開き、Active solution configuration のドロップダウンメニューで <Edit...> を選択し、「GL_vs2010_Release」を「GL_vs2015_Release」に名前を変更し、Configuration Manager で全てのプロジェクトが「GL_vs2015_Release」構成を使用するように設定します。

      ../../_images/open-configuration-manager.png ../../_images/rename-configurations-in-configuration-manager.png
    5. Visual Studioで、使用したいプラグインのすべての構成をビルドします。

  2. Kanzi Studio プロジェクトを Kanzi Studio で開き、Kanzi Studio にプロジェクトを現在のバージョンに変換させます。

  3. Library > Kanzi Engine Plugins の Kanzi Studio で、プラグインの GL VS2010 デバッグおよびリリースバージョンを選択し、Properties でプラグインを設定します。

    例えば、Library > Kanzi Engine Plugins で GL VS2015 Release プラグインの場合、GL VS2010 Release プラグインを選択し、Properties で設定します。

    • Name を GL VS2015 リリースに

    • Windows DLL Path を ..ApplicationlibWin32GL_vs2015_Release_DLL<ProjectName>.dll に

    • Visual Studio バージョンを 2015 に

      ../../_images/engine-plugin-properties.png

MOD() バインディング関数の変更

Kanzi Studio が Kanzi の以前のバージョンで作成されたプロジェクトを変換する際、バインディング内の MOD() 関数を新たに導入された REM() 関数に変更します。この変換は計算結果を保持します。

Kanzi 3.4では、REM() 関数は以前の Kanzi バージョンで MOD() 関数が返したのと同じ値を返しますが、Kanzi 3.4で導入された修正された MOD() 関数は、現在異なる結果を返します。mod(モジュロ) と 剰余 (remainder) を参照してください。

OpenGLとOpenGLESの間でのランタイム切り替え

Windowsオペレーティングシステムでは、Application::onConfigure 関数内、application.cfg 内、またはコマンドライン引数を使用して、OpenGL ESまたはOpenGLを使用するかどうかを選択できます。ターゲットがコマンドライン引数をサポートしている場合に限ります。

ES2_IMG の設定は、もはや存在しません。

application.cfg で使用:

  • GraphicsBackend を次のいずれかの値に設定します。

    • GLES (GLES)

    • OpenGL

  • GraphicsContextAPI を次のいずれかの値に設定します。

    • EGL

    • WGL

Application::onConfigure() で使用:

  • configuration.defaultSurfaceProperties.type を次のいずれかの値に設定します。

    • KZS_SURFACE_TYPE_ES2_ONLY (サーフェスは OpenGLES 2.0 レンダリングのターゲットです)

    • KZS_SURFACE_TYPE_GL_ONLY (サーフェスはOpenGLレンダリングのターゲットです)

  • configuration.defaultSurfaceProperties.contextApi を次のいずれかの値に設定します。

    • KZS_GRAPHICS_CONTEXT_API_WGL (グラフィックスコンテキストにWGLを使用)

    • KZS_GRAPHICS_CONTEXT_API_EGL (グラフィックスコンテキストにEGLを使用)

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

  • -gles を使用して OpenGL ES を利用する

  • -gl を使用して OpenGL を利用する

  • EGLを使用する -egl

  • WGLを使用する -wgl

  • GLXを使用する -glx

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

インクルードパスが変更されました

これらの Kanzi Engine に関連するグラフィックスのインクルードパスは、現在 kanzi/graphics_backend です。

  • グラフィックス

    • gl_graphics_output.hpp

  • graphics2d

    • brush_renderer.hpp

    • color_brush_renderer.hpp

    • composition_brush_renderer.hpp

    • content_brush_renderer.hpp

    • gl_brush_renderer.hpp

    • material_brush_renderer.hpp

    • texture_brush_renderer.hpp

  • graphics3d

    • framebuffer.hpp

    • renderbuffer.hpp

    • サンプラー.hpp

    • shader.hpp

    • texture.hpp

    • renderer3d.hpp

    • gpu_resource

  • レンダリング

    • gl_program_handle.hpp

    • gl_render_state*

    • gl_shader_handle.hpp

    • renderer.hpp

例えば、古いパスを更新します。

#include <kanzi/graphics3d/texture.hpp>

新しいパスへ

#include <kanzi/graphics_backend/texture.hpp>

グラフィックスの変更

新しいグラフィックス作成パターン

Kanzi 3.4は、テクスチャとレンダーターゲットを管理するためのAPIを合理化します。新しいAPIは、特定のグラフィックハードウェア機能のサポートを検証する手段を提供し、テクスチャオブジェクトが完全に構築され、常に使用可能であることを保証します。

テクスチャの変更

テクスチャクラスは、画像データを持つテクスチャとレンダーターゲットテクスチャをサポートしています。

CreateInfoクラスには、利便性のために含まれているさまざまな専門化されたサブクラスがあります。

  • CreateInfo2D

  • CreateInfoHostCopy2D

  • CreateInfoRenderTarget2D

  • CreateInfoCubemap

CreateInfo のパラメータは、Texture::create() 関数に渡す前にまだ変更できます。

テクスチャを作成するには、まず Texture::CreateInfo を使用して構造を準備し、それを Texture コンストラクタ、または TextureSharedPtr Texture::create() 関数に渡します。

テクスチャを作成した後、Texture::CreateInfo に渡したテクスチャパラメータを変更することはできません。

テクスチャの作成は、Texture::CreateInfo に誤ったパラメータやグラフィックスデバイスでサポートされていないパラメータを渡すと、例外をスローするようになりました。

kzbファイルからテクスチャをロードし、テクスチャの検証が失敗した場合、Kanzi はデフォルトのテクスチャを使用し、警告メッセージをログに書き込みます。

フレームバッファの変更

フレームバッファは、OpenGLパイプラインの複雑な構成をサポートする Kanzi Engine 機能です。これは、複数のレンダーターゲットや特定のミップマップレベルへのレンダリングなどの機能を実装するために RenderPass クラスで内部的に使用されます。複雑なOpenGLパイプラインを構成するために、Kanzi Studio でレンダーパスを使用してください。

シェーダーの変更

Blend Mode (StandardMaterial::BlendModeProperty) は、シェーダーで追加または削除できるプロパティではなくなりました。

レンダラーの変更

setActiveSurface() を setActiveGraphicsOutput() に置き換えました。

マテリアルタイプの変更

Kanzi 3.2 プロジェクトをロードする場合、Image 2D などのノードが、Blend Mode プロパティを使用しないマテリアルタイプのマテリアルを使用している可能性があります。マテリアルで望ましい効果を維持するために、Kanzi 3.4 でプロジェクトをロードする前に、Kanzi 3.2 で次の変更を行ってください。

  • Blend Mode プロパティを使用していないマテリアルタイプに追加します。

  • それらのマテリアルタイプを使用するマテリアルに対して Blend Mode プロパティを設定し、必要に応じて個々のノードにも設定します。

スケール、回転、変換の変更

2Dおよび3Dノードの変換プロパティは、SRTValue2D および SRTValue3D 構造体によって記述されます。この目的でMatrix3x3およびMatrix4x4構造体は使用されなくなりました。SRTValue2D および SRTValue3D を参照してください。

SRTValue3D は回転をクォータニオンとして保存します。これにより、アニメーションでよりスムーズな回転を作成できますが、オイラー角を使用した場合とは異なる結果を生じることがあります。

Page クラスが Page クラスと PageHost クラスに分割されました。

コードで Page ノードを作成した場合、Page ノードは Page クラスと PageHost クラスに分割されます。Page または Page Host 階層のルートノードとして Page Host ノードを作成する必要があります。

これらのプロパティは、Page クラスではなく、PageHost クラスにあります。

  • デフォルトSubPageプロパティ

  • LoopSubPagesProperty

これらのメッセージタイプは、Page クラスではなく、PageHost クラスにあります。

  • NavigationStartedMessage

  • NavigationFinishedMessage

  • NavigateNextMessage

  • NavigatePreviousMessage

メッセージ引数のC APIをC++ APIに置き換えました。

MessageArguments クラスを参照してください。

入力マニピュレータがC++に変換されました

コードで入力マニピュレータを使用する場合、関連する入力マニピュレータクラスのAPIドキュメントを参照してください。

ボックス、スフィア、およびプレーンの変更

Mesh::generateBox は現在 Mesh::createBox です。

Mesh::generateSphere は現在 Mesh::createSphere です。

Mesh::generatePlane は現在 Mesh::createPlane です。

メタデータの変更

メッセージタイプおよびプロパティタイプのメタデータの宣言方法が変更されました。プロパティまたはメッセージタイプの名前を提供するために、kzMakeFixedString マクロを使用する必要があります。<KanziWorkspace>/Examples/Node2D_plugin および <KanziWorkspace>/Examples/Node3D_plugin の例を参照してください。

アニメーションシステム (Animation System)

これは、古いCアニメーションAPIを含む Kanzi の最後のバージョンです。これは、古いアニメーションシステムのいくつかの機能が次のバージョンの Kanzi で削除されることを意味します。既知の問題 を参照してください。

旧C APIアニメーションシステムに含まれていたが、新しいC++ APIアニメーションシステムには含まれていない機能を引き続き使用したいかどうか、フィードバックを提供してください。

関連項目

Kanzi 3.4 リリースノート

既知の問題