Framework原始化和退出(Native)
最終更新: 2018年12月20日
开启
CubismFramework::StartUp函数设置内存记忆分配器和记录相关的选项。
如果没有设置内存记忆分配器,则后面的CubismFramework::Initialize 函数将不动作。
// C++ LAppAllocator cubismAllocator; //LAppAllocator继承自Csm::ICubismAllocator Csm::CubismFramework::Option cubismOption; // prepare for Cubism Framework API. cubismOption.LogFunction = LAppPal::PrintMessage; cubismOption.LoggingLevel = Live2D::Cubism::Framework::CubismFramework::Option::LogLevel_Info; Csm::CubismFramework::StartUp(&cubismAllocator, &cubismOption);
在第一个参数中,指定注册内存记忆分配方法的物体。
在第二个参数中,注册调试级别和调试函数。
原始化时,Cubsim Core for Native的版本信息通过调试函数如下图所示进行显示。
[CSM][I]Live2D Cubism Core version: 03.00.0003 (50331651)
原始化
完成CubismFramework::StartUp函数后,调用CubismFramework::Initialize函数。
请确保在应用程序中使用Framework前务必调用一次。
如果一次都不调用,则使用Framework时会出现错误。
如果您连续调用它们,处理将被忽略。
但是,调用后文描述的CubismFramework::Dispose函数并退出后,可以再次调用initialize函数并进行原始化。
// C++ CubismFramework::Initialize();
退出
调用CubismFramework::Dispose函数后,释放Framework预留的通用资源。
在调用CubismFramework::Initialize函数之前不要调用它。
基本上,它在应用程序退出时调用。
例外情况是在内存记忆非常少的环境下,并且您不需要它或者您想要完全隔离工具库时,
您也可以通过调用该函数来释放资源,然后在下次使用时再次调用CubismFramework::Initialize函数。
// C++ CubismFramework::Dispose();
自定义内存记忆分配器
该Framework允许您自定义内存记忆分配。
它通过CubismFramework::StartUp函数,将从ICubismAllocator类继承的分配器类作为第一个参数来应用。
// C++ class ICubismAllocator { public: /** * @brief 析构函数 * * 析构函数。 */ virtual ~ICubismAllocator() {} /** * @brief 释放具有对齐约束的堆内存记忆。 * * @param[in] size 要确保的字节数 * * @return 成功后分配的内存记忆地址。 否则,它返回“0”。 */ virtual void* Allocate(const csmUint32 size) = 0; /** * @brief 释放具有对齐约束的堆内存记忆。 * * @param[in] memory 要释放的内存记忆地址 * */ virtual void Deallocate(void* memory) = 0; /** * @brief 释放具有对齐约束的堆内存记忆。 * * @param[in] size 要确保的字节数 * @param[in] alignment 内存记忆块对齐宽度 * * @return 成功后分配的内存记忆地址。 否则,它返回“0”。 */ virtual void* AllocateAligned(const csmUint32 size, const csmUint32 alignment) = 0; /** * @brief 释放具有对齐约束的堆内存记忆。 * * @param[in] alignedMemory 要释放的内存记忆地址 * */ virtual void DeallocateAligned(void* alignedMemory) = 0; };
ICubismAllocator::Allocate函数和ICubismAllocator::Deallocate函数用于为通常Framework中的动态数组、关联数组、字符串等分配区域。
ICubismAllocator::AllocateAligned函数和ICubismAllocator::DeallocateAligned函数用于为Framework处理的csmMoc和csmModel分配区域。
ICubismAllocator::AllocateAligned函数分配的区域必须与第二个参数的大小对齐。
如果未对齐,则模型可能无法导入。