Domanda

Mi chiedo a questo proposito se crei una trama in memoria in DirectX con la funzione CreateTexture:

HRESULT CreateTexture(
  UINT Width,
  UINT Height,
  UINT Levels,
  DWORD Usage,
  D3DFORMAT Format,
  D3DPOOL Pool,
  IDirect3DTexture9** ppTexture,
  HANDLE* pSharedHandle
);

... e passa nel formato D3DFMT_UNKNOWN cosa dovrebbe succedere esattamente? Se provo a ottenere la superficie del primo o del secondo livello, si verificherà un errore? Può fallire? Il dispositivo grafico sceglierà solo un formato casuale di sua scelta? Ciò potrebbe causare problemi tra diversi modelli / marchi di schede grafiche?

È stato utile?

Soluzione

L'ho appena provato e non fallisce, soprattutto

Quando Utilizzo è impostato su D3DUSAGE_RENDERTARGET o D3DUSAGE_DYNAMIC , viene costantemente visualizzato come D3DFMT_A8R8G8B8 , non importa quale Ho fatto il formato del buffer posteriore o altre impostazioni. Non so se questo abbia a che fare con la mia scheda grafica o meno. Suppongo che specificare sconosciuto significhi "scegliere per me" e che il formato a 32 bit sia più semplice per la mia scheda.

Quando l'utilizzo era D3DUSAGE_DEPTHSTENCIL , falliva costantemente.

Quindi la mia migliore conclusione è che specificando D3DFMT_UNKNOWN in quanto il formato offre a DirectX la scelta di come dovrebbe essere. O forse per impostazione predefinita è sempre D3DFMT_A8R8G8B .

Purtroppo, non posso confermare nulla di tutto ciò in alcuna documentazione da nessuna parte. : |

Altri suggerimenti

MSDN non dice . Ma sono abbastanza sicuro che otterrai " D3DERR_INVALIDCALL " di conseguenza.

  

Se il metodo ha esito positivo, il ritorno   il valore è D3D_OK. Se il metodo fallisce,   il valore restituito può essere uno dei   seguente: D3DERR_INVALIDCALL,   D3DERR_OUTOFVIDEOMEMORY,   E_OUTOFMEMORY.

Penso che questo rientri nel "non definito" categoria. Alcuni driver falliranno le allocazioni, mentre altri potrebbero essere predefiniti a qualcosa. Non ho mai visto nulla nel WDK che dica che questa condizione deve essere gestita. Immagino che se abiliti il ??runtime DX di debug vedrai un messaggio di errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top