[D3D] Verwendung von D3DXLoadSurfaceFromSurface
-
Hallo!
Ich möchte eine Textur aus einer Datei laden und in eine andere umkopieren. Unten ist der entsprechende Codeausschnitt zu sehen. (Ist zwar Delphi, aber ich denke mal nicht das jemand ein Problem hat das zu verstehen)
Zuerst wird die SysMem Textur geladen, eine entsprechende vidmem Textur erzeugt und schliesslich umkopiert.
Das funktioniert solange ich bei der vidmem Textur nicht größer als 128x128 werde. Gebe ich wie untern 256x256 an wird das bild nicht mehr korrekt skaliert und sieht vermurkst aus.
(Das ursprungs bild ist 1024*768 groß)
Jemand ne idee was ich falsch mache?
Cheers,
AndréCheckHR(D3DXCreateTextureFromFileEx(g_pd3dDevice, pchar(sFile), D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_SYSTEMMEM, D3DX_DEFAULT, D3DX_DEFAULT, 0, @info, nil, g_pTextureSysMem)); CheckHR(g_pTextureSysMem.GetSurfaceLevel(0, surfImg)); surfImg.GetDesc(descImg); // CheckHR(D3DXCreateTexture(g_pd3dDevice, desc.Width, desc.Height, 0, 0, CheckHR(D3DXCreateTexture(g_pd3dDevice, 256,256, D3DX_DEFAULT, 0, descImg.Format, D3DPOOL_DEFAULT, g_pTexture)); CheckHR(g_pTexture.GetSurfaceLevel(0, surfTex)); surfTex.GetDesc(descTex); // g_pTextureSysMem.AddDirtyRect(nil); CheckHR(D3DXLoadSurfaceFromSurface(surfTex, nil, nil, surfImg, nil, nil, D3DX_DEFAULT, 0));