Kanzi 4.0.0 マイグレーションガイド¶
このマイグレーションガイドを使用して、Kanzi アプリケーションを Kanzi 3.9 から Kanzi 4.0 に更新してください。
注釈
ここで説明する変更点にプロジェクトがどの程度依存しているかによっては、マイグレーションするよりも Kanzi 4.0.0 で新しいプロジェクトを構築したほうが少ない労力で済む場合があります。
Visual Studio 2022 へのアップグレード¶
Kanzi は Visual Studio 2017 および 2019 用の Kanzi Engine ライブラリをサポートしなくなりました。
Kanzi Engine プラグインを使用する Kanzi Studio プロジェクトでは、Visual Studio 2022 でプラグインをリビルドし、プラグイン DLL を Kanzi Studio プロジェクトにインポートしてください。
ビルドシステムの変更点¶
すべてのプラットフォームが SCons ではなく CMake を使用するように移行されました。
Kanzi Graphics の導入¶
Kanzi Graphics の導入により、Kanzi アプリケーションが Kanzi のレンダリングサブシステムとやり取りする方法が変わります。
Renderer クラスのほとんどの関数を削除しました。代わりに、構成済みのバックエンド (Open GL、Open GL ES、または Vulkan) で Kanzi Graphics API を使用してください。
Kanzi Graphics は次の主要な部分で構成されています。
gfx::create関数とGraphicsCreateInfo構造体を使用してオブジェクトを作成します。Kanzi は
GraphicsCommandsをコマンドバッファに記録し、Kanzi Graphics バックエンドがこれらのコマンドを特定のグラフィックス API 向けに処理します。Kanzi Engine プラグインを使用する Kanzi Studio プロジェクトでは、プラグイン DLL を Kanzi Studio プロジェクトに再インポートする必要があります。
Kanzi 4.0.0 を使用してプラグインをリビルドします。
Library > Kanzi Engine Plugins で Kanzi Engine プラグインを削除し、更新した Kanzi Engine プラグインをインポートします。
これらのクラス、メンバー、または関数を削除しました:
kanzi::acquireUniformLocationkanzi::getUniformElementCountkanzi::GLBufferHandlekanzi::GLFramebufferHandlekanzi::GlGraphicsLogScopekanzi::GlGraphicsAdapterkanzi::GlGraphicsAdapterCallGleskanzi::GlGraphicsAdapterCallOpenGlkanzi::GlGraphicsAdapterCheckForErrorskanzi::GlGraphicsAdapterLoggerkanzi::GLGraphicsOutputkanzi::GLProgramHandlekanzi::GLRenderbufferHandlekanzi::GlRenderState::acquireUniformLocationkanzi::GlRenderState::allocateValueskanzi::GlRenderState::RenderValueUnionkanzi::GlRenderState::RenderValueInfokanzi::GlRenderState::TextureRenderValuekanzi::GlRenderValueBasekanzi::GLShaderHandlekanzi::GLTextureHandlekanzi::GlTextureRenderValuekanzi::Mesh::bindkanzi::Mesh::bindAttributekanzi::Mesh::bindAttributeskanzi::Mesh::bindIndicieskanzi::Renderer::getActiveGraphicsContextkanzi::Renderer::getActiveSurfaceVendorkanzi::Renderer::getUniformLocationSlowkanzi::Renderer::getUniformArrayLengthkanzi::Renderer::setUniformIntArraykanzi::Renderer::setUniformFloatArraykanzi::Renderer::setUniformVecArraykanzi::Renderer::setUniformColorArraykanzi::Renderer::setUniformMatArraykanzi::Renderer::setUniformIntegerkanzi::Renderer::setUniformFloatkanzi::Renderer::setUniformVec2kanzi::Renderer::setUniformVec3kanzi::Renderer::setUniformVec4kanzi::Renderer::setUniformColorRGBAkanzi::Renderer::setUniformMatrix3x3kanzi::Renderer::setUniformMatrix4x4kanzi::Renderer::setActiveScalarkanzi::Renderer::getActiveScalarkanzi::Renderer::calculateProjectionCameraWorldMatrixkanzi::Renderer::applyFixedUniformTimekanzi::Renderer::applyFixedUniformWindowSizekanzi::Renderer::applyTransformationUniformkanzi::Renderer::applyTransformationkanzi::Renderer::applyTextureSizeUniformskanzi::Renderer::applyTexturekanzi::Renderer::detachTexturekanzi::Renderer::setUniformTexturekanzi::Renderer::generateTexturekanzi::Renderer::deleteTexturekanzi::Renderer::setTextureAddressingModekanzi::Renderer::setTextureSwizzleMaskkanzi::Renderer::setTextureSwizzleEachChannelkanzi::Renderer::deleteShaderProgramkanzi::Renderer::deleteShaderkanzi::Renderer::generateFramebufferkanzi::Renderer::deleteFramebufferkanzi::Renderer::invalidateFramebufferAttachmentskanzi::Renderer::framebufferRenderbufferkanzi::Renderer::generateRenderbufferkanzi::Renderer::deleteRenderbufferkanzi::Renderer::bindRenderbufferkanzi::Renderer::renderbufferStoragekanzi::Renderer::generateBufferkanzi::Renderer::setVertexBufferDatakanzi::Renderer::setIndexBufferDatakanzi::Renderer::setVertexBufferSubDatakanzi::Renderer::setIndexBufferSubDatakanzi::Renderer::deleteBufferkanzi::Renderer::BufferAccessModekanzi::Renderer::mapVertexBufferkanzi::Renderer::unmapVertexBufferkanzi::Renderer::mapIndexBufferkanzi::Renderer::unmapIndexBufferkanzi::Renderer::enableVertexAttributeArraykanzi::Renderer::disableVertexAttributeArraykanzi::Renderer::getActiveShaderHandlekanzi::Renderer::getActiveShaderAttributeMapkanzi::Renderer::beginMaterialSetupkanzi::Renderer::endMaterialSetupkanzi::Renderer::pushStatisticskanzi::Renderer::popStatisticskanzi::Renderer::getIndexCountkanzi::Renderer::getTriangleCountkanzi::Renderer::getVertexCountkanzi::Renderer::getInstanceCountkanzi::Renderer::getBatchCountkanzi::Renderer::getShaderSwitchCountkanzi::Renderer::getUniformSendCountkanzi::Renderer::getTextureSwitchCountkanzi::Renderer::getFramebufferSwitchCountkanzi::Renderer::getBufferSwitchCountkanzi::Renderer::getHeavyweightCallCountkanzi::Renderer::getHalfFloatVertexAttributeSupportkanzi::Renderer::getTexStorageSupportkanzi::Renderer::getGLFormatTripletkanzi::Renderer::clearUniformCacheskanzi::Renderer::TextureUnitInfokanzi::Renderer::RenderingChangeStateFlagkanzi::Renderer::refreshRenderContextkanzi::Renderer::enableStatekanzi::Renderer::disableStatekanzi::Renderer::setStatekanzi::Renderer::getStatekanzi::Renderer::setBlendModekanzi::Renderer::getBlendModekanzi::Renderer::setCullModekanzi::Renderer::getCullModekanzi::Renderer::setDepthTestkanzi::Renderer::getDepthTestkanzi::Renderer::setLineWidthkanzi::Renderer::getLineWidthkanzi::Renderer::clearkanzi::Renderer::resetClearTargetkanzi::Renderer::addClearTargetkanzi::Renderer::getClearModekanzi::Renderer::addClearColorkanzi::Renderer::removeClearTargetkanzi::Renderer::isClearEnabledkanzi::Renderer::setClearColorkanzi::Renderer::setClearDepthValuekanzi::Renderer::setClearStencilkanzi::Renderer::setColorWriteModekanzi::Renderer::getColorWriteModekanzi::Renderer::setViewportkanzi::Renderer::getViewportkanzi::Renderer::setScissorTestkanzi::Renderer::getScissorkanzi::Renderer::setVertexBufferkanzi::Renderer::setIndexBufferkanzi::Renderer::drawBufferskanzi::Renderer::setVertexCountkanzi::Renderer::setIndexCountkanzi::Renderer::setIndexDatakanzi::Renderer::setInstanceCountkanzi::Renderer::setActiveTextureUnitkanzi::Renderer::bindTexturekanzi::Renderer::setTextureImage2Dkanzi::Renderer::setTextureSubImage2Dkanzi::Renderer::textureStoragekanzi::Renderer::generateMipMapskanzi::Renderer::setTextureFilterkanzi::Renderer::setTextureComparekanzi::Renderer::setTextureMaximumLevelkanzi::Renderer::createShaderkanzi::Renderer::createShaderProgramkanzi::Renderer::attachShaderToProgramkanzi::Renderer::detachShaderFromProgramkanzi::Renderer::bindAttributeToLocationkanzi::Renderer::linkShaderProgramkanzi::Renderer::compileSourceShaderkanzi::Renderer::deployBinaryShaderkanzi::Renderer::deployBinaryProgramkanzi::Renderer::loadProgramFromCachekanzi::Renderer::saveProgramToCachekanzi::Renderer::getCacheFilePathkanzi::Renderer::updateSettingskanzi::Renderer::getProgramBinarykanzi::Renderer::isFramebufferCompletekanzi::Renderer::framebufferTexture2Dkanzi::Renderer::applyVertexAttributeArrayskanzi::Renderer::setVertexBufferPointerkanzi::Renderer::setVertexBufferPointerkanzi::Renderer::setActiveShaderHandlekanzi::Renderer::setActiveFramebufferkanzi::Renderer::setColorBufferCountkanzi::Renderer::getActiveFramebufferkanzi::Renderer::beginVertexArraykanzi::Renderer::setVertexArrayDatakanzi::Renderer::endVertexArraykanzi::Renderer::getCurrentVertexArrayFlagskanzi::Renderer::getCurrentVertexArrayAttributeDatakanzi::Renderer::isShaderBinaryFormatSupportedkanzi::Renderer::isProgramBinaryFormatSupportedkanzi::Renderer::applyAttributePointerkanzi::Renderer::supportsTexStoragekanzi::Renderer::setHasTessellationShaderkanzi::Renderer::setFillModekanzi::Renderer::readPixelskanzi::Renderer::setPixelStorePackkanzi::Renderer::setPixelStoreUnpackkanzi::Shader::UniformProperty::uniformLocationkanzi::Shader::hasSamplersWithoutPropertieskanzi::Shader::getTextureUniformLocationkanzi::Texture::deployImageskzsGlGraphicsContextCreatekzsGlGraphicsContextDestroykzsGlGraphicsContextSetActivekzsGlGraphicsContextGetAdapterkzsGlGraphicsContextIsKhrDebugSupportedkzsGlGraphicsContextGetVendorkzsGlGraphicsContextGetSurfaceClientAPIkzsGlGraphicsContextGetAPIkzsGlIsExtensionSupportedkzsGlGraphicsContextSetLoggingkzsGlGraphicsContextGetLoggingkzsGlGraphicsContextGetDumpStateOnDrawCallskzsGlGraphicsContextSetErrorCheckingkzsGlGraphicsContextSetDebugCallbackkzsGlGraphicsContextGetGlesSymbolskzsGlGraphicsContextGetOpenGlSymbols
レンダーステートの抽象化は OpenGL 固有のものではないため、プラットフォーム固有の "Gl" プレフィックスを除くために、
kanzi::GlRenderStateクラスの名前をRenderStateに変更しました。ヘッダーファイルも
kanzi/core.ui/graphics3d/render_state.hppからkanzi/core.ui/graphics/render_state.hppに移動しました。直接の代替がある以下の関数を削除しました:
削除されました
代わりに使用するもの
kanzi::captureCurrentFramebufferToImagekanzi::captureScreenToImagekanzi::GPUBuffer::getNativeHandlekanzi::Mesh::getNativeVertexBufferHandlekanzi::Mesh::getNativeIndexBufferHandlekanzi::Mesh::getNativeInstanceBufferHandlekanzi::Renderbuffer::getNativeHandlekanzi::Renderer::applyFixedUniformskanzi::Renderer::getMaximumVertexAttributeCountgfx::getDeviceProperty(gfx::DevicePropertyId::MaxVertexAttributes)kanzi::Renderer::setActiveGLGraphicsOutputkanzi::Geometry::drawTextured関数およびkanzi::Geometry::drawUntextured関数を削除しました。これらの関数を使用している場合は、コードを次のように変更できます。if (isTextured()) { geometry.drawTextured(renderer, transform, GraphicsPrimitiveTypeTriangleStrip, material); } else { geometry.drawUntextured(renderer, transform, GraphicsPrimitiveTypeTriangleStrip, material); }
終点
renderer.setMatrix(FixedMatrixWorld, transform); renderState.updateTransformationUniforms(renderer); renderState.draw(renderer, geometry);
Renderer API の変更¶
Renderer3Dクラスを削除しました。Kanzi はRenderer3Dクラスを使用して 3D レンダリング中に一時的なプロパティを保存し、Preview のデバッグ機能を提供していました。このバージョンの Kanzi では、次のように移行しています。
レンダリングを
DebugRenderRegistryクラスおよびDebugVisualizationクラスに移行3D レンダリング固有の処理は、
GatherLightsRenderPassなどのレンダーパスで処理されるようになりました
アプリケーションコード内の
Renderer3Dの使用箇所をすべてRendererを使用するように変更してください。これには、Renderer3Dをパラメーターとして受け取るすべての仮想関数も含まれます。これらの関数を
Renderer3DクラスからRendererクラスに移動しました。Renderer3Dクラスの削除に伴うリファクタリングにより、これらの関数を削除しました。削除された関数のほとんどはデバッグレンダリングに関連するものです。Renderer::bindFramebufferRenderer::setActiveFramebufferCallbackRenderer::setDefaultFramebufferRenderer3D::addVertexAndNormalToFloatArraysRenderer3D::addVertexToFloatArrayRenderer3D::applyBoolPropertyRenderer3D::applyColorMaterialRenderer3D::applyColorPropertyRenderer3D::applyFloatPropertyRenderer3D::applyIntPropertyRenderer3D::applyMaterialRenderer3D::applyMaterialStrictRenderer3D::applyMatrix3x3PropertyRenderer3D::applyMatrix4x4PropertyRenderer3D::applyPropertyTypeRenderer3D::applySRT2DPropertyRenderer3D::applySRT3DPropertyRenderer3D::applyStencilSettingsRenderer3D::applyTexturePropertyRenderer3D::applyVector2PropertyRenderer3D::applyVector3PropertyRenderer3D::applyVector4PropertyRenderer3D::calculateNormalRenderer3D::drawBoxSolidNormalRenderer3D::drawLayerOutlineQuadRenderer3D::drawLayerQuadRenderer3D::drawLayerQuadWithMaterialRenderer3D::drawLineListRenderer3D::drawPrimitivesRenderer3D::drawOrientedBoundingBoxSolidNormalRenderer3D::drawPrimitiveBufferTexturedRenderer3D::drawPrimitiveBufferUntexturedRenderer3D::drawPrimitivesNormalRenderer3D::drawSelectionIndicatorRenderer3D::drawQuadRenderer3D::drawTrajectoryRenderer3D::drawUntexturedLayerQuadRenderer3D::drawViewportQuadWithTextureSpanRenderer3D::getActiveGLGraphicsOutputRenderer3D::getClearColorOverrideRenderer3D::getFloatBufferRenderer3D::getResourceManagerRenderer3D::isBoundingBoxVisualizationEnabledRenderer3D::isColorWriteDisabledRenderer3D::isSkeletonVisualizationEnabledRenderer3D::printInfoRenderer3D::removeClearColorOverrideRenderer3D::setActiveGLGraphicsOutputRenderer3D::setBoundingBoxVisualizationEnabledRenderer3D::setClearColorOverrideRenderer3D::setDefaultOrthoProjectionRenderer3D::setDisableColorWriteRenderer3D::setFramebufferCallbackRenderer3D::setLoggingRenderer3D::setSkeletonVisualizationEnabledSurface::attachSurface::attachOverride
代わりに、
DebugVisualizationクラスとDebugVisualizationStorageクラスを使用して、ノードのデバッグビジュアライゼーションを描画および保存します。DebugComposerが自動的に使用する標準のDebugRenderRegistry::DebugObjectRenderingFunctionは次のように変更されました。void (*DebugObjectRenderingFunction)(Renderer& renderer, DebugRenderStorage& storage, DebugVisualization* visualization, NodeSharedPtr object);
storageにアクセスして、Nodeのデバッグビジュアライゼーション構造を作成できます。前のフレームでこれを行っている場合、visualizationパラメーターは null ではないため、それを使用できます。DebugVisualizationに保存されたジオメトリは、シーングラフからNodeを削除するまで保持されます。Surface::Usageエヌメレーションを削除しました。RenderTargetModeは非推奨となり、Textureから削除されました。その結果、次のようになります。Texture::CreateInfo::Statusおよびinterop::TextureEnums::CreateInfo::StatusからStatusInvalidRenderTargetModeを削除しました。Texture::CreateInfo::Statusおよびinterop::TextureEnums::CreateInfo::Statusで、StatusUnsupportedInternalRenderTargetSampleCountの名前をStatusUnsupportedRenderTargetSampleCountに変更しました。
RenderTargetModeエヌメレーションの削除に伴い、Texture::CreateInfoとTextureを変更し、GraphicsFormatFeatureとRenderTargetModeの設定を削除しました。テクスチャのクリエイトインフォでは、テクスチャの使用目的を指定するためにgfx::ImageUsageFlagのマスクを使用するようになりました。Texture::CreateInfoにusageFlagsフィールドを追加しました。コンポジションターゲットを作成する場合は、
gfx::ImageUsageFlag::Attachmentフラグを有効にします。このフラグはkanzi::Texture::CreateInfoNode2DRenderTargetによって自動的に有効になります。gfx::ImageUsageFlag::SampledShaderResourceはデフォルトで有効になっています。テクスチャをサンプリングしない場合は、このフラグを削除し、代わりにgfx::ImageUsageFlag::ShaderResourceを設定します。その他の関連フラグは、テクスチャセッティングに基づいて自動的に有効になります。- MSAA テクスチャの場合は
gfx::ImageUsageFlag::CopyDestination。- 使用目的に応じて、コピー元やコピー先などの追加フラグを手動で有効にできます。
GlRenderValueクラスとGlBlendModeRenderValueクラス、およびupdateRenderValue関数を削除しました。代わりにkanzi::GlRenderStateを使用してください。GraphicsPrimitiveTypeエヌメレーションからGraphicsPrimitiveTypeLineLoopオプションを削除しました。代わりにGraphicsPrimitiveType::GraphicsPrimitiveTypeLineStripを使用し、頂点リストの末尾に最初の頂点を複製して追加してください。GlRenderValueBindingクラスの名前をRenderValueBindingに変更しました。GPUBufferTypeエヌメレーションを削除しました。代わりにgfx::BufferUsageFlagを使用してください。新しい GPU バッファーを作成する場合は、gfx::BufferUsageFlag::VertexBufferまたはgfx::BufferUsageFlag::IndexBufferのいずれかを使用します。既存のイメージオブジェクトからテクスチャを作成するために使用されていたオーバーロードメソッド
Texture::createで、nativeHandleパラメーターの型がgfx::NativeTextureHandleに変更されました。新しいグラフィックスバックエンドにより使用されなくなった関数を削除しました。
Renderer::getColorReadFormatRenderer::getColorReadType
Rendererから一部の機能検出メソッドを削除しました。削除されました
代わりに使用するもの
kanzi::Renderer::checkGLSupportkanzi::Renderer::checkGLESSupportkanzi::Renderer::getGlesVersionkanzi::Renderer::getMultisampleSupportマルチサンプリングは常にサポートされます。
kanzi::Multisampleマルチサンプルのタイプは区別されなくなりました。
kanzi::Mesh のインデックスバッファーの統合¶
kanzi::Mesh のインデックスバッファを、各 kanzi::Mesh::Cluster がそれぞれ個別に持つのではなく、メッシュ (Mesh) オブジェクト自体が持つ 1 つのインデックスバッファに統合しました。これにより、インデックスバッファ関連の API 呼び出しはメッシュ自体に移動するか、クラスタのパラメータが削除されます。インデックスバッファのタイプ (Type) とハンドルのパラメータは、kanzi::Mesh::CreateInfo::Cluster のコンストラクタから削除されました。これらは kanzi::Mesh::CreateInfo に直接含まれるようになったためです。必要に応じて、Mesh::getClusterIndexOffset を使用してメインのインデックスバッファ内のバイトオフセットを取得してください。
削除されました |
代わりに使用するもの |
|---|---|
|
|
|
|
|
|
以下の関数からクラスタインデックスのパラメータを削除しました:
kanzi::Mesh::mapIndexData |
プラットフォーム API の変更¶
OpenGL コンテキスト API を参照するいくつかのエンティティの名前を変更しました。
削除されました |
代わりに使用するもの |
|---|---|
|
|
|
|
kanzi/core/platform/cpp/win32/string_conversion.hppにある Win32 文字列 (String) ユーティリティを、kanziネームスペース (Namespace) からwin32に移動しました。
プラットフォームに依存するウィンドウ処理とインプット (Input) のコードはすべて、別のライブラリ (Library) である kzplatform に移動しました。
データ駆動型エクスクルーシブアクティビティホストの変更¶
Data-Driven Exclusive Activity Host は、データソースから作成されたアクティビティのみをサポートするようになり、手動で追加したアクティビティはサポートしなくなりました。代わりに Exclusive Activity Host を使用してください。
リストボックス (List Box) の変更¶
ListBoxConceptクラスで、以下のメッセージとメッセージアーギュメント (Arguments) の名前を変更しました:Kanzi 3.9
Kanzi 4.0
ListBoxConcept::ItemHiddenMessageListBoxConcept::ItemHiddenMessageArgumentsListBoxConcept::ItemVisibleMessageListBoxConcept::ItemVisibleMessageArgumentsListBoxConceptImplクラスで、以下のパブリック (Public) メンバー関数の名前を変更しました:Kanzi 3.9
Kanzi 4.0
ListBoxConceptImpl::getAliveRangeListBoxConceptImpl::updateVisibleRangeQuietListBoxConceptImpl::updateVisibleRangeListBoxTrajectoryPresenterクラスで、以下のプロテクトメンバー関数の名前を変更しました:Kanzi 3.9
Kanzi 4.0
ListBoxTrajectoryPresenter::calculateVisibleRangeListBoxTrajectoryPresenter::updateVisibleRangeListBoxTrajectoryPresenter::extendVisibleItemRangeToItem以下のクラスとそのメタクラス名を変更しました。
Kanzi 3.9
Kanzi 4.0
DataSourceListItemGeneratorDataSourceListItemGenerator2DDataSourceListItemGenerator3D
リストボックス (List Box) ノードへの変更¶
Grid List Box ノードでは、デフォルトの方向ナビゲーションキーでアイテムのセレクションが移動しなくなりました。List Box ノードでは、デフォルトの方向ナビゲーションキーで、フォーカサブルなリストアイテム間でキーフォーカスが移動するようになりました。
たとえば、↑ キーと ↓ キーで Grid List Box をスクロールするには、リストアイテムをフォーカサブルにします。List Box ノードでのキー入力フォーカスの処理 を参照してください。
ActivityCodeBehind クラスへの変更¶
Kanzi C++ API の
ActivityCodeBehindクラスで、onActive、onInactive、onActivating、onDeactivatingコールバックをActivityCodeBehind::onStatusChangeに置き換えました。Kanzi アプリケーションを移行するには、
onActive、onInactive、onActivating、onDeactivatingコールバックの内容をActivityCodeBehind::onStatusChangeコールバックに移動します。たとえば、ActivityCodeBehindから派生させる場合は、以下の文字列を見つけます。void onActive() override { kzLogInfo(KZ_LOG_CATEGORY_GENERIC, ("Activity status changed: Active")); }
終点
void onStatusChange(ActivityConcept::Status status) override { switch(status) { case ActivityConcept::Status::Active: kzLogInfo(KZ_LOG_CATEGORY_GENERIC, ("Activity status changed: Active")); break; } }
Kanzi C++ (
ActivityCodeBehind) と Kanzi Java API (ActivityCodeBehind) の両方で、registerStatusChange、registerStatusChangeOverride、unregisterStatusChange、unregisterStatusChangeOverrideを削除しました。Kanzi アプリケーションを移行するには、登録済みのステータス変更コールバックの内容を
ActivityCodeBehind::onStatusChangeコールバックに移動します。例:
ActivityCodeBehindから派生させる場合は、以下の文字列を見つけます。void registerStatusChangeOverride() override { registerStatusChange(ActivityConcept::Status::Active, [](ActivityConcept::StatusChangedMessageArguments&) { kzLogInfo(KZ_LOG_CATEGORY_GENERIC, ("Activity status changed: Active")); }); }
終点
void onStatusChange(ActivityConcept::Status status) override { switch(status) { case ActivityConcept::Status::Active: kzLogInfo(KZ_LOG_CATEGORY_GENERIC, ("Activity status changed: Active")); break; } }
ActivityCodeBehindから派生させる場合は、以下の文字列を見つけます。@Override protected void registerStatusChangeOverride() { registerStatusChange(ActivityStatus.Active, (messageArguments) -> { Log.info("Activity status changed: Active"); }); }
終点
@Override protected void onStatusChange(ActivityStatus status) { super.onStatusChange(status); switch(status) { case Active: Log.info("Activity status changed: Active"); break; } }
ActivityElementImpl クラスと ActivityHostConceptImpl クラスへの変更¶
ActivityHostConceptImplクラスから以下のメソッドを削除しました。getActiveOrAttachedActivatinggetAttachedActivityNodesgetActivityInfo
Kanzi アプリケーションを移行するには、
ActivityHostConceptImplクラスを継承するクラスで、削除されたメソッドのオーバーライドを削除します。ActivityElementImpl::onAttachedOverrideメソッドは仮想メソッドではなくなりました。Kanzi アプリケーションを移行するには、
ActivityElementImplクラスを継承するクラスで、ActivityElementImpl::onAttachedOverrideメソッドをオーバーライドしているonAttachedOverrideメソッドのオーバーライドを削除します。
File API への変更¶
File クラスで、以下のメンバー関数を、匿名データバッファ操作に char ではなく byte を使用するように変更しました。
関数 |
シグネチャ |
|---|---|
|
|
|
|
|
この変更は、File クラスを継承する ReadOnlyDiskFile、ReadOnlyMemoryFile、WriteOnlyDiskFile クラスの関数にも適用されます。
ピンチマニピュレータ (Pinch Manipulator) の変更¶
PinchManipulator クラスの変更:
効果のなかった以下のメンバー関数とメンバー変数を削除しました。
関数:
setRotationRecognitionThresholdsetScaleRecognitionThreshold
変数:
m_rotateThresholdm_rotatingm_scaleThresholdm_scaling
以下のメンバー変数をプライベートにしました。
m_normalizedReferenceVectorm_previousMiddlem_referenceScalem_touchIdAm_touchIdB
アプリケーション構成の変更¶
エヌメレーション値
MultisamplePreference::MultisamplePreferenceImplicitを削除しました。これにより、次のアプリケーション構成ファイルのオプションも削除されますMultisamplePreference = "implicit"
これは、Kanzi Engine から暗黙的なマルチサンプリングのサポートを削除するという、より広範な変更を反映したものです。今後、Kanzi がマルチサンプリングを適用するのは、
Renderbufferのブリットまたは明示的にアクセス可能なサンプルを使用する場合のみです。このオプションはレガシー GPU を対象としていたため、レンダリング結果に目に見える影響があります。一般的な慣習に従い、ダブルダッシュのプレフィックスが付いたコマンドラインパラメータを受け付けるようにアプリケーション構成を変更しました。グラフィックスバックエンドを選択するための新しいパラメータは以下のとおりです。
--gles--opengles--gl--opengl--vk--vulkan
ウィンドウシステムを選択するための新しいパラメータは以下のとおりです。
--egl--wgl--glx
アプリケーション構成ファイルでは、同じパラメータをダブルダッシュなしで使用できます。
Kanzi は、論理値の構成オプションの有効な値として
false、true、0、1のみを受け付けるようになりました。TracingInterval構成オプションの名前を変更しました。削除されました
代わりに使用するもの
TracingIntervalTracingTimeIntervalconfiguration.tracingConfiguration.recurringIntervalconfiguration.tracingConfiguration.recurringTimeIntervalTracingTimeInterval を参照してください。
Composition Stack の変更¶
CompositionStack の使用方法を簡素化し、Renderer が所有するインスタンスを使用する必要があるようにしました。
デフォルトコンストラクタと、
CompositionStackにコンポジションターゲットを自動的に追加するコンストラクタを削除しました。以下のメソッドから
kanzi::Renderer3DおよびRendererパラメータを削除しました。kanzi::CompositionStack::apply2Dkanzi::CompositionStack::applyPerspective2D
以下のメソッドとそのすべてのオーバーライドから
CompositionStackパラメータを削除しました。CompositionStack::pushCompositionのパラメーターの型をNativeFramebufferHandleからFramebufferに変更しました。NativeFramebufferHandleに0を使用しているコードでは、CompositionStack::pushCompositionActiveGraphicsOutputを使用して、Rendererのアクティブなグラフィックス出力からフレームバッファをプッシュできるようになりました。
NodeEffectRenderer2D::endInitialEffectPassで、パラメーターの型をCompositionStackからkanzi::Rendererに変更しました。
CompositionStack::pushRasterizationに、GraphicsFillMode型のパラメーターを追加しました。
CompositionStackからデフォルトのスタックステートを削除しました。kanzi::CompositionStack::applyを呼び出す前に、ステートを明示的にプッシュする必要があります。デフォルト設定をプッシュするための
CompositionStack::pushDefaultSettings2DとCompositionStack::pushDefaultSettings3Dを追加しました。スタックから 2D または 3D の設定をポップするためのCompositionStack::popSettingsを追加しました。
CompositionStackからアプライ関数を削除しました。すべてのプッシュおよびポップ操作は、追加の関数呼び出しなしで自動的に適用されます。
削除されました |
代わりに使用するもの |
|---|---|
|
対応は不要です。 |
|
|
|
|
|
対応は不要です。 |
|
サポートされなくなりました。 |
|
対応は不要です。 |
|
サポートされなくなりました。 |
|
対応は不要です。 |
|
サポートされなくなりました。 |
|
対応は不要です。 |
|
サポートされなくなりました。 |
ステートマネージャーの変更¶
ステートの変更時に、ステートマネージャーがプロパティ変更通知を送信し、バインディングを更新する方法を変更しました。以前は、ステートが変更されるたびに、古いステートのプロパティを削除する際に 1 回、新しいステートのプロパティを追加する際に 1 回の通知が送信されていました。現在は、ステートの変更時に、新しいステートの新しいプロパティ値を含む通知が 1 回だけ送信されます。ステートの変更にトランジションアニメーションがある場合、トランジション中は Kanzi が従来どおりプロパティ通知を送信しますが、トランジション開始時のステート変更によって発生する冗長な通知は送信しません。
API を使用してステートマネージャーを作成する場合:
StateManager::StateObject::setStyleに渡すスタイルは、Style::createWithValueModifiersを使用して作成してください。Kanzi は、
StateManager::StateObject::setStyleに渡されたスタイルを変更し、ステートマネージャーの外部でそのスタイルを使用した場合にも通知を送信しないようにします。これらの冗長な関数または正しく動作しない関数を削除しました:
Style::createEmptyStyle::copyStyle::copyParentPropertiesStateManager::createEmpty
プロパティとバインディングの変更¶
プロパティとバインディングにおける Boolean 値の文字列変換の結果が、1 または 0、および True または False ではなく、小文字の true または false になりました。
Kanzi アプリケーションを以前のバージョンから移行するには、Boolean 値と比較するすべての文字列値が小文字の true または false であることを確認してください。
サスペンド処理の変更¶
削除された以下の関数に代わる機能を備えた WakeupSignalSource クラスを追加しました:
EventSource::getNativeEventHandleKeyMapEventFilter::getNativeEventHandleKeyRepeatGenerator::getNativeEventHandle
イベント処理の変更¶
Application::appendEventSource から削除された機能に代わる Application::setInputEventHandle 関数を追加しました。
kzuEngine の変更点¶
以前に非推奨となった kzuEngine 関連の機能を削除しました。
Application::getEngine関数Application::m_engineメンバーkzuEngine構造体kzuEngineで始まるすべての関数kzu_engine.hヘッダーファイル
スクロールビュー (Scroll View) のメッセージの変更¶
Scroll View ノードと Grid List Box ノードで使用されていた、以下の非推奨のメッセージとメッセージハンドラーを削除しました。
削除されました |
代わりに使用するもの |
|---|---|
|
|
|
|
|
スクロール機能 を参照してください。
複数の Kanzi Engine API の変更¶
複数の Kanzi Engine API のパラメータと戻り値の型を、unsigned int ではなく size_t データタイプを使用するように更新しました。
kanzi::optional と kanzi::string_view を C++17 の std 実装に変更しました。以前のバージョンの Kanzi で Boost 実装を使用していたプラットフォームでは、これらのクラスのパラメータと戻り値の型を移行してください。
kanzi::byte を C++17 の std 実装に変更しました。以前のバージョンの Kanzi で unsigned char を使用していたプラットフォームでは、このクラスのパラメータと戻り値の型を移行してください。
kanzi::string_view パラメータに対する trim の実装を、他のパラメータタイプと同様に、インプットをその場で直接変更するように変更しました。
Wayland IVI バックエンドのサーフェスのオパシティ設定は、整数ではなく浮動小数点数として解釈されるようになりました。wayland::IviSurfaceProps::opacity と wayland::IviLayerProps::opacity を参照してください。
関数 surfaceColorSpaceNameToEnum を libkzcoreui から libkzplatform に移動しました。
構成が存在しない場合の Kanzi Engine アプリケーションのデフォルトの
SurfaceColorSpaceを、SurfaceColorSpace::sRGBからSurfaceColorSpace::Standardに変更しました。この値は、新しい Kanzi Studio プロジェクトでデフォルトで構成されるカラーワークフローと一致します。
C ラッパーヘッダーの変更¶
ヘッダー kzs_string.hpp、kzs_arg.hpp、kzs_memory.hpp を削除しました。
削除されました |
代わりに使用するもの |
|---|---|
など |
など |
|
|
|
|
|
|
レガシーファイル API の変更¶
ヘッダー kzs_file.hpp と kzs_resource_file.hpp を削除しました。
代わりに ReadOnlyDiskFile を使用してください。
フォーカスメッセージの変更¶
フォーカスシステムで使用されていた、以下の非推奨のメッセージとメッセージハンドラーを削除しました。
削除されました |
代わりに使用するもの |
|---|---|
|
|
|
フォーカス処理の変更 を参照してください。
Androidアプリケーションテンプレートの変更¶
Kanzi の Android アプリケーションテンプレートが Gradle 8.13、Android Gradle Plugin 8.12.1、Java 言語バージョン 11 にアップグレードされました。
既存のアプリケーションを移行するには:
<ProjectName>/Application/configs/platforms/android_gradle/gradle/wrapper/gradle-wrapper.propertiesで、置き換え:distributionUrl=https\://services.gradle.org/distributions/gradle-<version>-bin.zip
以下に置き換えます。
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
<ProjectName>/Application/configs/platforms/android_gradle/build.gradleで、置き換え:dependencies { classpath 'com.android.tools.build:gradle:<android-gradle-plugin-version>' classpath 'com.rightware.gradle:kanzi:<kanzi-gradle-plugin-version>' }
以下に置き換えます。
dependencies { classpath 'com.android.tools.build:gradle:8.12.1' classpath 'com.rightware.gradle:kanzi:0.9.0' }
<ProjectName>/Application/configs/platforms/android_gradle/app/build.gradleで:Java の互換性を更新します:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } }
Kotlin の JVM ターゲットを更新します:
android { kotlinOptions { jvmTarget = '11' } }
カスタム Java プラグインがある場合は、
exportJarタスクを更新します:リプレイス (Replace)
task exportJar(type: Jar) { // ... rest of the task configuration from("build/intermediates/javac/${buildType.name}/classes/") // ... rest of the task configuration }
以下に置き換えます。
task exportJar(type: Jar) { // ... rest of the task configuration from("build/intermediates/javac/${buildType.name}/compile${buildType.name.capitalize()}JavaWithJavac/classes/") // ... rest of the task configuration }
Android NDK バージョンの変更¶
Kanzi アプリケーションで現在の Android NDK バージョンを使用するように設定するには、アプリケーションの build.gradle ファイルで ndkVersion を 26.3.11579264 に設定します。
Kanzi Studio の Android パッケージエクスポートの変更¶
Kanzi Studio から Android パッケージをビルドする際、Kanzi Studio はプロジェクトの Binary File Name プロパティに基づいて cfg ファイルをエクスポートするようになりました。
アプリケーションを移行するには、binaryFileName または kzbPathList の定義を更新します。
ページ (Page) およびページホスト (Page Host) ノードの非推奨化¶
Page ノードと Page Host ノードは非推奨となり、Kanzi の次のバージョンで削除されます。ナビゲーション可能なユーザーインターフェイスを作成するには、代わりに Activity ノードと Activity Host ノードを使用するように、Kanzi Studio プロジェクトと Kanzi アプリケーションを手動で作り直す必要があります。
Activity Host ノードと Activity ノードを作成および検査し、Activity のアクティベーションをシミュレートするには、Activity Browser ウィンドウを使用します。アクティビティブラウザの使用 を参照してください。
Page Host ノードを置き換えるには、以下の Activity Host ノードを使用します:
Exclusive Activity Host は、子アクティビティのうち一度に1つだけをアクティブにすることができます。Exclusive Activity Host の1つの子アクティビティがアクティブな場合、そのアクティビティホストの他のすべてのアクティビティは非アクティブになります。例えば、Exclusive Activity Host を使用して、アプリケーション内のビューを切り替えることができます。
エクスクルーシブアクティビティホスト を参照してください。
Parallel Activity Host は、複数の子アクティビティを同時にアクティブ化することができます。アクティビティをアクティブ化すると、Parallel Activity Host がそのアクティビティを前面に表示します。
パラレルアクティビティホスト を参照してください。
リストデータソースと Data-Driven Exclusive Activity Host を使用して、データオブジェクトのコンテンツから Activities を持つUIの一部を作成できます。例えば、データソースでメニューのコンテンツを定義し、Data-Driven Exclusive Activity Host を使用してアプリケーション内にメニューを作成することができます。
データ駆動型エクスクルーシブアクティビティホスト を参照してください。
Page ノードを Activity ノードに置き換えます。
アクティビティについて学ぶには、次を参照してください:
テキストレンダリングの変更¶
FontRuntime::getGlyphCacheの戻り値の型を、GlyphCacheの参照からGlyphCacheSharedPtrに変更しました。GlyphRunは、GlyphRun::drawメソッドではなくコンストラクターでGlyphCacheを受け取るようになり、GlyphCache::getTextureメソッドを通じてグリフキャッシュテクスチャを公開します。TextFormat::drawのシグネチャを、マテリアルパラメーターの代わりにレンダーエントリーとコンテンツテクスチャハンドルを受け取るように変更しました。この関数は、マテリアルがすでにレンダーステートにバインドされていることを前提とするようになりました。以前に非推奨となった
kanzi::StandardMaterial::GlyphTexturePropertyプロパティタイプを削除しました。FontManager::getRuntimeFontは、フォントファミリーパラメーターが空の場合、空のフォントを返す代わりにnullptrを返すことがあるようになりました。
モーフデータの変更¶
以前のバージョンの Kanzi では、Mesh を継承し、ブレンドの起点および終点となるモーフターゲットとして他のメッシュを参照する、個別の kanzi::Morph オブジェクトを使用していました。Kanzi バージョン 4.0.0-beta2 以降、モーフデータはベースメッシュに対する差分として表現されます。複数のメッシュの使用は廃止され、kanzi::Morph クラスの概念全体も削除されました。
メッシュには、差分データを含む内部の Mesh::MorphData オブジェクトを含めることができるようになりました。このデータには const kanzi::Mesh::MorphData* kanzi::Mesh::getMorphData() const でアクセスできます。シェイプ数が十分に少なく、一般的な 16 アトリビュートチャンネルの制限内に収まるモーフの場合、Kanzi Studio はメッシュデータを Mesh::MorphData 内の頂点バッファーブロブとしてエクスポートします。より多くのチャンネルを必要とするモーフデータは、使用するために選択されたモーフシェイプに基づいて、Model3D に直接割り当てられるデータテクスチャとして保存されます。
古いモーフ用の固定ユニフォーム kzMorphDataTexture、kzMorphIndices、kzMorphWeights を使用するシェーダーは、Studio で非推奨としてマークされるようになりました。
モーフウェイトの変更¶
以前のバージョンの Kanzi では、Model3D ノードにモーフメッシュを設定すると、Kanzi Engine はモーフウェイトを kanzi::Morph のデフォルトウェイトで上書きしていました。Kanzi 4.0.0-beta1 以降、モーフウェイトは保持されます。
以前の動作を再現するには、Model3D::MeshProperty を nullptr に設定し、新しい kanzi::Morph を割り当てます。
以前のバージョンの Kanzi では、モーフウェイトは kanzi::Model3D ノードの子オブジェクトである個別のモーフランタイムによって処理されていました。Kanzi 4.0.0-beta1 以降、モーフウェイトは単なる範囲です。
モーフのウェイトを設定するには、正しい数の要素を持つ kanzi::TypedValueRange<float> を含む AbstractRangeSharedPtr を Model3D::MorphingProperty に割り当てます。ウェイトの最大数は Mesh::MorphData から読み取ることができます。
ウェイトが割り当てられていない場合でも、Kanzi Engine はデフォルトのウェイトで埋められたクラス値ソースを作成します。このソースは、アプリケーション開発者がより上位レベルの値やバインディングを割り当てない限り使用されます。
kanzi::MorphWeightAnimationTimeline を使用してモーフのウェイトをアニメーション化する従来のメカニズムは非推奨になりました。モーフのウェイトは単なるレンジプロパティになったため、新たに導入されたタイプ RangeIndexAnimationTimeline を使用してください。
削除されました |
代わりに使用するもの |
|---|---|
|
|
|
CubeMapRenderPass の変更¶
CubeMapRenderPass はデプステクスチャを自動的に作成しなくなりました。デプステクスチャを作成するには、CubeMapRenderPass::DepthFormatProperty を設定します。
CubeMapRenderPass::DepthFormatProperty を設定するか、CubeMapRenderPass::DepthTargetProperty を使用してデプステクスチャを手動で設定しない限り、メモリを節約しパフォーマンスを向上させるために、Kanzi はデプスレンダーバッファを 1 つだけ使用します。Kanzi は、CubeMapRenderPass の各面でこのデプスレンダーバッファを再利用します。
テクスチャの変更¶
廃止された作成情報の型 kanzi::Texture::CreateInfoNode2DRenderTarget と Texture::CreateInfoRenderpassRenderTarget を削除しました。Texture::CreateInfoRenderTarget を使用してください。コンポジションに使用するテクスチャは、常に独自のフレームバッファを持つか、たとえば CompositionTargetRenderPass のように、Kanzi によって内部で単一のフレームバッファに統合されるようになりました。個別の作成シナリオは不要なため削除されました。
ライトプロパティの変更¶
以下のプロパティはライトノードから削除されました。代わりにカメラノードのプロパティを使用してください。
ライトノードから削除 |
代わりに使用するカメラノードのプロパティ |
|---|---|
Shadow Projection Z Near |
Z Near |
Shadow Projection Z Far |
Z Far |
Shadow Projection Z Orthogonal Plane Size |
Orthogonal Plane Size |
プログレッシブレンダリングビューポート2Dプロパティの変更¶
削除されました |
代わりに使用するもの |
|---|---|
ProgressiveRenderingViewport2D.MultisampleLevel |
Node2D.MultisampleLevel |
Kanzi Studio コマンドの変更¶
SaveProjectがファイルパスではなくディレクトリパスを受け取るように変更されました。SaveProject "C:\Example\directory\path\projectName.kzproj"をSaveProject "C:\example\directory\path\"に置き換えるか、プロジェクトを既存のロケーションに保存する場合はSaveProjectに置き換えます。SaveProject を参照してください。NewProjectがファイルパスではなくディレクトリパスを受け取るように変更されました。NewProject "C:\Example\directory\path\projectName.kzproj"をNewProject "C:\example\directory\path\" "projectName"に置き換えます。NewProject を参照してください。
SaveProjectコマンドからオプションのprojectFileFormatパラメーターを削除しました。
削除された API メンバー¶
Kanzi の以前のバージョンで非推奨になった以下の Kanzi Engine C++ API メンバーを削除しました。
削除されました |
代わりに使用するもの |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用不可 |
|
|
|
|
|