Kanzi 3.9.7 マイグレーションガイド¶
このマイグレーションガイドを使用して、Kanzi アプリケーションを Kanzi 3.9.6 から Kanzi 3.9.7 に更新してください。
NodeCompositor2D クラスと NodeEffect2D クラスの変更点¶
CompositionContentRequirements 構造体を導入し、合成およびエフェクトレンダーターゲットの要件を設定するためのパラメータを含んでいます。
struct CompositionContentRequirements
{
/// Required size of the source content to be used by the effect.
Vector2 size;
/// Whether the content requires alpha channel.
bool alpha;
/// Whether the content requires depth buffer.
bool depth;
/// Whether the content requires stencil buffer.
bool stencil;
/// MSAA sample count for content buffer.
unsigned int numSamples;
};
NodeCompositor2D クラスの変更:
Kanzi 3.9.6 |
Kanzi 3.9.7 |
|---|---|
|
|
|
|
|
|
|
|
NodeEffectRenderer2D クラスの変更:
Kanzi 3.9.6 |
Kanzi 3.9.7 |
|---|---|
|
|
|
|
|
|
Kanzi Java API への変更¶
CallbackBindingProcessor¶
Kanzi Java API BindingProcessor は、NativeObject の代わりに KanziObject を継承するようになりました。これは、Kanzi Java API CallbackBindingProcessor.create が、CallbackBindingProcessor の代わりに ObjectRef<CallbackBindingProcessor> を返すようになったことを意味します。
列挙型プロパティのサポート¶
Kanzi Java API は、列挙型データ型のプロパティをサポートするようになりました。
セッターおよびゲッター関数では、整数の代わりに列挙型の値を使用できるようになりました。
たとえば、以下を置き換えることができます
textNode.setProperty(TextBlock2D.FontHintingPreferenceProperty, 1); // FontHintingPreference::NativeHinting
以下に置き換えます。
textNode.setProperty(TextBlock2D.FontHintingPreferenceProperty, FontHintingPreference.NativeHinting);
KanziObject.getPropertyでは、列挙型プロパティのクラスを2番目のパラメーターとして提供する必要がなくなりました。たとえば、以下を置き換えることができます
Node.HorizontalAlignment value = node.getProperty(Node.HorizontalAlignmentProperty, Node.HorizontalAlignment.class);
以下に置き換えます。
Node.HorizontalAlignment value = node.getProperty(Node.HorizontalAlignmentProperty);
JavaとKotlinのインターフェース継承の動作の違いにより、組み込みの列挙型のアクセス方法が異なります。
例えば、
metadata.NodeMetadata.HorizontalAlignmentPropertyプロパティの場合:これはJavaとKotlinの両方で動作します:
NodeEnums.HorizontalAlignment.Center;
これはJavaでのみ動作します:
Node.HorizontalAlignment.Center;
これらの未使用の列挙型を削除しました:
Node3D.RenderModeNode2D.RenderType
バインディングの設定と削除の変更¶
これらの関数の戻り値の型が AbstractBindingRuntimeSharedPtr から BindingRuntimeHandle に変更されました。
BindingRuntimeHandle -> 演算子は、AbstractBindingRuntime へのリンクを返します。この方法で、バインディングランタイム関数は同一に動作します。
グラフィックス出力とデスクトップの変更¶
Kanzi 3.9.7では、GBMウィンドウシステムを使用するプラットフォームで、Kanzi アプリケーションに使用するグラフィックスカードを設定できます。導入された改善点:
makeLegacyGraphicsOutput関数およびLegacyGraphicsOutput::LegacyGraphicsOutputコンストラクタにおけるdesktopPropertiesパラメータ。kzs_desktop.h::kzsDesktopCreateおよびkzs_desktop.h::kzsDesktopNativeCreate関数では、desktopPropertiesRequestedパラメータ。
Kanzi 3.9.6 |
Kanzi 3.9.7 |
|---|---|
|
|
|
|
|
|
|
|
Javaコードビハインドの変更¶
Kanzi アプリケーションがAndroidテンプレートの1つに基づいており、そのアプリケーションの Kanzi Studio プロジェクトにJava Code Behindを追加したい場合は、アプリケーションを移行してください。
Kanzi アプリケーションを移行するには、
Android Studioで、Kanzi アプリケーションのAndroidアプリケーションを開きます。メインメニューで File > Project Structure を選択します。Project Structure ウィンドウで、Project タブを選択し、次の設定を行います。
Android Gradle Plugin Version から 7.2.2 へ
Gradle Version から 7.3.3 へ
OK をクリックします。
app/src/main/AndroidManifest.xmlで、manifest要素からpackage属性を削除します。たとえば、変更
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication">
終点
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
app/build.gradleで、androidスコープにnamespaceプロパティを追加します。新しいツールでは、
compileSdkおよびtargetSdkプロパティをAndroid APIレベル31以上に設定する必要があります。android { namespace 'com.example.myapplication' compileSdk 31 defaultConfig { applicationId "com.example.myapplication" minSdk 26 targetSdk 31
アプリケーションに既にプラグインがソースプロジェクトまたはJava Code Behindとしてある場合は、それらの AndroidManifest.xml および build.gradle ファイルに対して手順を繰り返してください。
ブラシレンダラーの変更¶
Kanzi 3.9.7は、ブラシレンダラーをより均一にするために簡素化されました。この改善により、次の変更が導入されました。
GlBrushRendererベースクラスを削除し、異なるブラシクラスからの機能のほとんどをBrushRendererベースクラスに移動しました。RenderValuePropertyNotificationHandlerクラスを削除しました。すべてのブラシ (Brushes) がレンダー値の格納に
kanzi::GlRenderStateを使用するようになったため、RenderValuePropertyNotificationHandlerメンバーは不要になりました。Kanzi は、レンダーステート内でプロパティ (Properties) をユニフォーム (Uniforms) に自動的にマッピングするようになりました。
Kanzi の以前のバージョンを使用して、独自の派生ブラシクラスと関連するブラシレンダラークラスを実装した場合、アプリケーションを Kanzi 3.9.7 に移行するには、次の手順を使用してください。
GlBrushRendererを継承する代わりに、BrushRendererを継承してください。これらの関数の機能は、現在ベースクラスによって提供されています。
getRenderOpacityValue()getContentTextureValue()getBlendModeValueOverride()setBlendModeOverride()setBlendModeFallback()
これらの関数のいずれかを実装した場合、ほとんどの場合、実装を削除するだけで済みます。
bindOverride()関数を実装した場合は、void bindOverride(Renderer3D&, PropertyObject*)の形式を使用するように変更してください。BrushRenderer::bindOverrideを参照してください。プロパティオブジェクトは、プロパティのフォールバック値を取得するための追加オブジェクトです。
MaterialBrushの場合、これはマテリアルであり、マテリアル内のプロパティの変更に反応することができます。他のすべての不変のマテリアルを使用するブラシについては、このパラメータをnullptrに設定します。BrushRenderer::isChangeCounterSameとBrushRenderer::updateChangeCounter関数は、現在バーチャルです。ブラシが可変マテリアルを使用している場合、マテリアルプロパティの変更に対応するために、これらの関数でマテリアル変更カウンターを追跡する必要があります。ブラシが不変マテリアルを使用している場合、これらの関数を実装しないでください。
PropertyObject APIの変更点¶
Kanzi Engine のコード品質を向上させるために、PropertyObject APIを変更しました。PropertyObject::validatePropertyModifiers は非推奨となりました。代わりに PropertyObject::validatePropertyModifiersAndNotifyHandlers を使用してください。
バインディングAPIの変更点¶
binding_processor_runtime.hpp から m_lookupContext クラスメンバーを削除しました。
Kanzi アプリケーションがカスタムバインディングプロセッサランタイムを実装している場合、m_lookupContext の使用を getBindingRuntime().getLookupContext() に置き換えてください。