Kanzi 3.9.6 マイグレーションガイド¶
このマイグレーションガイドを使用して、Kanzi アプリケーションを Kanzi 3.9.5 から Kanzi 3.9.6 に更新してください。
kanzi::variantの変更¶
kanzi::variant の C++ typedef を boost::variant から boost::variant2 に変更しました。
boost::variant2 はC++17の std::variant と同じAPIを使用していますが、これは以前使用されていた boost::variant のAPIとは異なります。
たとえば、Kanzi アプリケーションを移行するには:
v.which()をv.index()に置き換えます。v.type() == typeid(T)をholds_alternative<T>(v)に置き換えます。すべてのビジタークラスから
boost::static_visitorの派生を削除します。v.apply_visitor(visitor)とapply_visitor(visitor, v)をvisit(visitor, v)に置き換えます。
ヘッダーファイルの変更¶
Kanzi Engine は、より多くの前方宣言を使用し、domain.hpp および metaclass.hpp のヘッダーファイルに不要なインクルードを含まなくなりました。Kanzi アプリケーションを移行するには、欠落しているヘッダーをインクルードしてください。
例えば、以前は kanzi::TaskDispatcher と kanzi::ResourceDictionary を使用することが可能でした。
#include <kanzi/core.ui/domain/domain.hpp>
ですが、今後は以下を使用する必要があります
#include <kanzi/core.ui/domain/domain.hpp>
#include <kanzi/core.ui/task_dispatcher/task_dispatcher.hpp>
#include <kanzi/core.ui/resource/resource_dictionary.hpp>
CMake構成ファイルの変更¶
Cotire CMakeモジュールは、Kanzi ワークスペースで利用できなくなりました。このモジュールを引き続き使用したい場合は、https://github.com/sakra/cotire または以前の Kanzi リリースから入手できます。しかし、CMakeバージョン3.16から利用可能なCMakeの組み込み機能 target_precompile_headers を使用するようにCMake構成ファイルを移行することをお勧めします。
Kanzi Java API カスタムリソースマネージャープロトコルの変更点¶
Kanzi Java API カスタムリソースマネージャープロトコルを使用する場合、リソースは非所有の Resource 参照を使用する代わりに、ObjectRef インスタンスの背後に配置されます。これにより、リソースがまだロードされている間に作成されたオブジェクトのライフタイムがJVMのガベージコレクタによって回収されないことが保証されます。
同期ロードを実装する際、ResourceManager.ProtocolHandler.Result コンストラクタは単純な Resource の代わりに ObjectRef<? extends Resource> を受け取るように変更されました。このコンストラクタを使用するコードを変更して、所有する ObjectRef インスタンスを提供してください。
Kanzi 3.9.5 |
Kanzi 3.9.6 |
|---|---|
|
|
非同期ロードを実装する際、ResourceManager.LoadTask.getResult() メソッドは、単純な Resource の代わりに ObjectRef<? extendes Resource> を返すようになりました。通常、LoadTask インスタンスはリソースを作成する際に ObjectRef へのアクセス権を既に持っています。推奨される方法は、clone() メソッドを使用して、その内部 ObjectRef インスタンスのクローンを返すことです。
Kanzi 3.9.5 |
Kanzi 3.9.6 |
|---|---|
|
|
拡張クラスでオーバーライドできる ResourceManager.LoadTask.close() メソッドを追加しました。必要に応じて、内部の LoadTask リソースの明示的なメモリクリーンアップを可能にします。
ブラシレンダリングの変更¶
タイルベースのレンダリングを使用するGPUでのパフォーマンスを向上させるために、Kanzi は2Dレンダリング中にフレームバッファをクリアしないようにすることを試みなくなりました。
この改善により、BrushRenderer インターフェースに以下の変更が導入されます。
Kanzi 3.9.5 |
Kanzi 3.9.6 |
|---|---|
|
|
|
|
変更は以下に影響します:
BrushRendererから派生したカスタムクラスブラシを手動で使用してコンテンツをレンダリングするアプリケーションコード
シェーダー作成の変更¶
Kanzi 3.9.6. は、ジオメトリシェーダーとテッセレーションシェーダーのサポートを追加しました。この改善により、ShaderProgram::CreateInfo に以下の変更が導入されました。
頂点およびフラグメントシェーダー固有のフィールドを、より汎用的なバリアントに置き換えました。
バイナリデータ型を文字列からバイトベクターに変更しました。
便利クラス ShaderProgram::CreateInfoShaderSource と ShaderProgram::CreateInfoShaderBinary は同じままです。
Kanzi 3.9.5 |
Kanzi 3.9.6 |
|---|---|
|
|
|
|
|
|
|
|
フォーカスと入力管理の変更¶
Kanzi 3.9.6では、Node はそれがアタッチされている Screen ノードを認識し、その Screen から FocusManager および InputManager インスタンスを取得できます。
これらの関数を導入しました:
Node::getFocusManager()とNode::getInputManager()は、ノードが属するScreenノードに関連付けられたFocusManagerとInputManagerインスタンスを取得します。Node::getScreen()とNode::setScreen()は、ノードが属するScreenノードを取得および設定します。Screen::setFocusManager()とScreen::setInputManager()は、FocusManagerとInputManagerをScreenノードに関連付けます。
これらの関数を削除しました:
Domain::getFocusManager()。代わりにNode::getFocusManager()を使用してください。Domain::getInputManager()。代わりにNode::getInputManager()を使用してください。
Kanzi Android framework (droidfw) から Kanzi Java API へのアクセスの変更¶
If the root node of the prefab displayed in a Kanzi view is a Screen node, the getRoot() method now returns the child of that Screen node. In previous versions of Kanzi, the method returned the Screen node. See Kanzi Java および Kotlin API にアクセスする.
KzuEngineの変更点¶
kzuEngine 構造体は非推奨となり、その機能は Application、Node、ResourceManager、および Screen クラスに移行されました。
Kanzi 3.9.5 |
Kanzi 3.9.6 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
この変更により、kzuEngineCreate()、kzuEngineDelete()、および Application::getEngine() 関数は廃止されます。
その他の変更¶
GatherLightsRenderPass::checkLightsModified()関数では、チェックする光の範囲を指定するlightRangeパラメータが導入されました。この関数は、GatherLightsRenderPassを継承するカスタムレンダーパスで使用できます。PropertyAccessRangeでは、adapt()関数は、shared_ptrの代わりに範囲参照を入力として受け取るようになりました。