デモでEffectフレームワークを使用しています。ここID3DX11Effectポインタを解放できませんか?
は、私がそこにある、私はデモのウィンドウを閉じると、デモを実行して、私は
void HillsDemo::UnLoadContent()
{
if (m_pVertexBuffer) m_pVertexBuffer->Release();
if (m_pIndexBuffer) m_pIndexBuffer->Release();
if (m_pInputLayout) m_pInputLayout->Release();
if (m_pTechnique) m_pTechnique->Release();
if (m_pFx) m_pFx->Release();
}
に従うようにそれらを解放
ID3D11Buffer* m_pVertexBuffer;
ID3D11Buffer* m_pIndexBuffer;
ID3D11InputLayout* m_pInputLayout;
ID3DX11Effect* m_pFx;
ID3DX11EffectTechnique* m_pTechnique;
ID3DX11EffectMatrixVariable* m_pFxWorldViewProj;
ヘッダファイルに私のdefinationありますなぜでしょうか?次に、
if (m_pFx) m_pFx->Release();
という行を削除しても、エラーはありません。だから
m_pFx
をリリースしますか?
私はEffect11 https://github.com/Microsoft/FX11/wiki/Effects-11のドキュメントを表示、文書にあります。
次のタイプは、現在のIUnknownから派生している:ID3DX11EffectType、ID3DX11EffectVariable、I3DX11EffectPass、ID3DX11EffectTechnique、ID3DX11EffectGroup。これらのオブジェクトは、標準のCOM参照カウントルールに従わず、親ID3DX11Effectが解放されると解放されます。これは主に、管理対象言語からのEffects 11の使用を簡素化することです。
m_pFx
とm_pTechnique
の両方をリリースするのではなく、m_pFx
をリリースする必要があるということですか?何か案は?
は、私がComPtrを使用する場合はエラーがなかった、ありがとうございました。しかし、私が未加工のポインタを使用する場合、問題はまだ私がm_pFxをリリースする限り解決されていません。それはとても混乱しています。 – zhangbaochong
'' m_pFx''の作成方法を表示する必要があります –
次のように、 'D3DX11CompileEffectFromFile'関数を使用します:L = color.fx、nullptr、D3D_COMPILE_STANDARD_FILE_INCLUDE、shaderFlags、0、m_pd3dDevice、&m_pFx 、&errorBlob); 、違いますか? – zhangbaochong