我使用以下内容加载着色器:
ID3DXBuffer* errors = 0;
ID3DXEffect* effect = 0;
HR(D3DXCreateEffectFromFile(
gd3dDevice, L"Shader.fx", 0, 0,
D3DXSHADER_DEBUG|D3DXSHADER_SKIPOPTIMIZATION,
0, &effect, &errors));
for (int i = 0; i < 3; i++) {
if(errors) {
errors->Release();
if (effect)
effect->Release();
errors = 0;
HR(D3DXCreateEffectFromFile(gd3dDevice, L"Shader.fx",
0, 0, D3DXSHADER_DEBUG, 0, effect, &errors));
}
else
break;
}
它正在尝试加载着色器,如果它收到错误/警告,它会在放弃之前再尝试 3 次。
现在我发现当我关闭应用程序时,D3DX 给了我以下消息:
D3DX:检测到内存泄漏:2 个分配未释放(486 字节)
这仅在出现错误时发生(即进入循环)。我真的不确定为什么会这样,有什么想法吗?
好的,我修复了它,只是一个逻辑问题,“错误”在第三次尝试时没有调用“发布”,因此出现了问题。