Frage

Ich lade einen Shader mit dem folgenden:

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;
}

Welche versucht, einen Shader zu laden und wenn es einen Fehler bekommt / Warnung versucht es wieder 3 mal, bevor er aufgibt.

Jetzt habe ich gefunden, wenn ich die Anwendung D3DX gibt mir die folgende Meldung zu schließen:

D3DX: Speicherlecks festgestellt: 2 Zuteilungen unfreed (486 bytes)

und dies geschieht nur, wenn es Fehler (das heißt, es geht in die Schleife). Ich bin wirklich nicht sicher, warum dies geschieht, irgendwelche Ideen?

OK ich es behoben wurde nur ein logisches Problem, ‚Fehler‘ nicht über ‚Freisetzung‘ rief er auf dem dritten Versuch daher das Problem.

War es hilfreich?

Lösung 2

OK ich es behoben wurde nur ein logisches Problem, ‚Fehler‘ nicht über ‚Freisetzung‘ rief er auf dem dritten Versuch daher das Problem.

Andere Tipps

. Hinweis: ID3DXBuffer auch freigegeben werden soll, wenn DX-Funktion (. Ex D3DXCreateEffectFromFile) nicht scheitern

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top