[INFORMATION](4/25/2024)
Cubism Editor 5.1 alpha3 is now available!
We have incorporated some of your comments and suggestions. Thank you for your comments and requests!
We will continue to welcome your feedback on alpha3.
Download/
Manual and Update History
Can cause csmReviveMocInPlace return nullptr when I use csmGetSizeofModel?
#include
#include
#include
int main(int argc,char ** argv)
{
for(auto i=0;i<100000;i++)
{
auto file = fopen("../../../CubismSDK/Core/Haru/Haru.moc3", "rb");
fseek(file, 0, SEEK_END);
auto len = ftell(file);
fseek(file, 0, SEEK_SET);
auto data = std::vector<uint8_t>(len);
auto readLen = fread(data.data(), sizeof(uint8_t), len, file);
if (len != readLen)
{
printf("No!");
}
auto moc = csmReviveMocInPlace(data.data(), len);
if (!moc)
{
printf("moc is nullptr!");
}
auto modelSize = csmGetSizeofModel(moc);
printf("%d\n", i);
fclose(file);
}
}
--------------------------------------------------------------------
I run my example.Not add csmGetSizeofModel's function can work.But I add csmGetSizeofModel will csmReviveMocInPlace return null and print my log "moc is nullptr!".
0 ·
Comments
Please check if the allocated memory is alligned.
Here is Live2D Core API.
https://cubism.live2d.com/sdk-doc/reference/NativeCoreAPIReference_en_r11.pdf
And see the API 'csmReviveMocInPlace..."The address passed by address must satisfy the default alignment."
I wondered if perhaps the moc variable had an incorrect value because the memory was not aligned.
This is a sample to get alligned memory.
https://github.com/Live2D/CubismNativeSamples/blob/044c9b091a1feae8296248229acf97ddbd3dd0dd/Samples/OpenGL/Demo/proj.android.cmake/Full/app/src/main/cpp/LAppAllocator.cpp#L22
I try your example,it can work.
Thanks.