CubismNativeFrameworkのD3D11用にてメモリリークとリソースリーク

【Cubism SDKのバージョン】Cubism 5 SDK for Native R5 beta3_1

【OS名・バージョン】Windows11

【開発使用ツール】Visual Studio 2026

【不具合の状況】CubismNativeFrameworkのD3D11用にてメモリリークとリソースリークが発生しているかと思います。以下のコードをご確認いただければと思いますのでよろしくお願いいたします。

ファイル CubismRenderer_D3D11.cpp で

関数 void CubismRenderer_D3D11::ReleaseCommandBuffer() の以下のコード

if (_constantBuffers != NULL)
{
    CSM_FREE(_indexBuffers);
    _constantBuffers = NULL;
}
if (_constantBuffers != NULL)
{
    CSM_FREE(_vertexBuffers);
    _constantBuffers = NULL;
}

こちらの条件判定が間違っているためメモリリークが発生しています(NULLを代入する変数も間違ってます)

ファイル CubismShader_D3D11.cpp で

関数 void CubismShader_D3D11::GenerateShaders(ID3D11Device* device) の以下のコード

    // コピー
    if (!LoadShaderProgram(device, false, ShaderNames_Copy, "VertCopy", shaderString))
    {
        break;
    }
    if (!LoadShaderProgram(device, true, ShaderNames_Copy, "PixelCopy", shaderString))
    {
        break;
    }

    // マスク
    if(!LoadShaderProgram(device, false, ShaderNames_SetupMask, "VertSetupMask", shaderString))
    {
        break;
    }
    if (!LoadShaderProgram(device, true, ShaderNames_SetupMask, "PixelSetupMask", shaderString))
    {
        break;
    }

これと同様のコードがもう一度かかれているため最初にロードしたシェーダーがリークしています

@wanwanswan

いつも弊社製品をご愛顧のほど誠にありがとうございます。
Lvie2D スタッフでございます。

CubismNativeFrameworkのD3D11用にてメモリリークとリソースリークにつきましてご報告ありがとうございます。
内容確認しご指摘いただきました2個所についてリーク発生を確認いたしました。ご迷惑をおかけいたしまして誠に申し訳ございません。
本件は開発チームに共有し、精査ののち今後の製品リリースにて修正いたします。

修正方法につきましては @wanwanswan 様ご指摘の通り、次の2個所を修正いただくことでリークの解消が臨めます。

  1. void CubismRenderer_D3D11::ReleaseCommandBuffer()

修正後

    if (_indexBuffers != NULL)
    {
        CSM_FREE(_indexBuffers);
        _indexBuffers = NULL;
    }
    if (_vertexBuffers != NULL)
    {
        CSM_FREE(_vertexBuffers);
        _vertexBuffers = NULL;
    }
  1. void CubismShader_D3D11::GenerateShaders(ID3D11Device* device)

以下コードを削除

お手数をおかけいたしますが、上記修正を適用いただきご利用をお願いいたします。

なにとぞ、よろしくお願いいたします。

お世話になっております。

ご対応いただきありがとうございます。

ご指示通り修正し利用させていただきます。

「いいね!」 1