Probleme mit D3DXLoadSurfaceFromSurface



  • Hallo Leute, folgende Funktion schlägt bei mir immer fehl:

    IDirect3DSurface *pFontSurf = 0x00;
    g_pDev->CreateOffscreenPlainSurface(512,512,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,&pFontSurf,0);
    RECT rect = {0,0,512,512};
    D3DXLoadSurfaceFromFile(pFontSurf,0x00,&rect,"font.dds",&rect,D3DX_FILTER_NONE,0,0x00);
    
    IDirect3DTexture9 *pTex = 0x00;
    g_pDev->CreateTexture(512,512,1,0,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,&pTex,0);
    
    IDirect3DSurface *pTextSurf = 0x00;
    pTex->GetSurfaceLevel(0,&pTextSurf);
    D3DXLoadSurfaceFromSurface(pTex,0x00,&rect,pTextSurf,0x00,&rect,D3DX_FILTER_NONE,0); // diese Funktion schlägt fehl...
    

    Ach ja, bevor einer merken sollte, dass dieser Code eigentlich viel zu umständlich ist und das ich das font.dds auch gleich mit D3DXCreateTextureFromFile in die Textur laden kann: Das hier ist nur eine sehr vereinfachte Version meines Codes, fuktioniert allerdings auch nicht...
    Muss ich vielleicht die Texture mit einem anderen D3D_USAGE Flag erstellen ???

    Gruss Ishildur



  • Versuch mal D3DX_FILTER_DEFAULT

    M.T.



  • Wieso sollte das notwenig sein, die beiden Surfaces haben doch dieselbe grösse, rsp. es ist keine skalierung nötig ?? 😕



  • Ich hab hier keine Doku, würde aber mal denken, das D3DXLoadSurfaceFromSurface eine komplett neue Surface erstellt. Demzufolge müsste du die erstmal laden und dann nur den Inhalt in die Textur kopieren. Für einen erfolgreichen Kopiervorgang müssen dann IIRC auch spezielle Frlags beim erstellen der Textur gesetzt gewesen sein.



  • Original erstellt von TGGC:
    Ich hab hier keine Doku, würde aber mal denken, das D3DXLoadSurfaceFromSurface eine komplett neue Surface erstellt.

    Tja, FALSCH GEDACHT!!! 😡 😡 😡



  • Hei Leute
    Ich habs inzwischen rausgefunden !

    Das Surface darf nicht mit dem Parameter D3DPOOL_MANAGED erstellt werden, dann klappt alles !


Anmelden zum Antworten