문제

다음과 함께 셰이더를로드합니다.

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 바이트)

그리고 이것은 오류가있을 때만 발생합니다 (즉, 루프에 들어갑니다). 왜 이런 일이 일어나고 있는지 잘 모르겠습니다. 아이디어가 있습니까?

OK IT를 수정했습니다. 단지 논리 문제 일뿐입니다. '오류'는 세 번째 시도에서 '릴리스'가 없었기 때문에 문제가 발생했습니다.

도움이 되었습니까?

해결책 2

OK IT를 수정했습니다. 단지 논리 문제 일뿐입니다. '오류'는 세 번째 시도에서 '릴리스'가 없었기 때문에 문제가 발생했습니다.

다른 팁

참고 : DX 기능 (예 : D3dxCreateeFectFromFile)이 실패하지 않은 경우에도 ID3DXBuffer가 해제되어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top