Frage

Ich frage mich, Art über diese, wenn Sie eine Textur im Speicher in DirectX mit der CreateTexture Funktion erstellen:

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

... und in D3DFMT_UNKNOWN Format übergeben, was genau geschehen sollte? Wenn ich versuche, um die Oberfläche des ersten oder zweiten Ebene zu bekommen wird es einen Fehler verursachen? Kann es nicht? Wird das Grafikgerät nur ein zufälliges Format seiner Wahl wählen? Könnte dies zu Problemen führen, zwischen verschiedenen Grafikkartenmodelle / Marken?

War es hilfreich?

Lösung

Ich habe gerade versucht es aus und es nicht scheitern, meist

Wenn Usage eingestellt ist D3DUSAGE_RENDERTARGET oder D3DUSAGE_DYNAMIC, kam es immer wieder als D3DFMT_A8R8G8B8 aus, egal, was ich in den Rückpuffer-Format oder andere Einstellungen haben. Ich weiß nicht, ob das mit meiner Grafikkarte zu tun hat oder nicht. Meine Vermutung ist, dass unbekannte Mittel spezifizieren, „für mich holen“, und dass das 32-Bit-Format ist am einfachsten für meine Karte.

Wenn die Nutzung war D3DUSAGE_DEPTHSTENCIL, es scheiterte konsequent.

So ist meine beste Schlussfolgerung ist, dass D3DFMT_UNKNOWN als Format Angabe gibt DirectX die Wahl von dem, was es sein sollte. Oder vielleicht ist es immer nur standardmäßig D3DFMT_A8R8G8B.

Leider kann ich nicht irgendetwas davon in irgendeiner Dokumentation bestätigen überall. : |

Andere Tipps

MSDN hat nicht sagen . Aber ich bin ziemlich sicher, dass Sie würden erhalten „D3DERR_INVALIDCALL“ als Ergebnis.

  

Wenn die Methode erfolgreich ist, die Rückkehr   Wert ist D3D_OK. Wenn die Methode fehlschlägt,   Der Rückgabewert kann eine der sein   Folgende: D3DERR_INVALIDCALL,   D3DERR_OUTOFVIDEOMEMORY,   E_OUTOFMEMORY.

Ich denke, das in die „undefiniert“ Kategorie fällt. Einige Fahrer die Zuweisungen fehlschlagen, während andere etwas in Verzug gerät. Ich habe noch nie etwas in der WDK gesehen, der sagt, dass diese Bedingung behandelt werden muss. Ich nehme an, wenn Sie die Debug-DX Laufzeit ermöglichen, wird eine Fehlermeldung angezeigt.

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