2016-07-14 15 views
-2

Ich habe Schwierigkeiten zu verstehen, wenn das Präfix "I" für DirectX11 STRUCT und COM-Objektklassen enthalten?Wann Präfix "I" für STRUKTUREN verwenden, Klassen in directx11?

zum Beispiel:

1) IDXGI vs DXGI 2) ID3D11 vs D3D11

Ich kann nicht scheinen, um es herauszufinden, wenn was zu verwenden, bitte helfen Sie.

+0

warum zum Teufel ich unten Stimme (n) bekommen? es gibt eine andere sehr ähnliche (nicht exakte) Frage hier: http://StackOverflow.com/Questions/37509559/understanding-id3d11device-and-id3d11devicecontext und sie erhielten keine downvotes ... – dave

+0

lesen Sie wieder den guten Weg, um ein zu fragen frage http://stackoverflow.com/help/how-to-ask – galop1n

+0

ich oder nicht ich in einem klassennamen ist eine reine meinung basierte entscheidung, ich meine schnittstelle, und cary das prädikat es wird ein komplexes objekt, die einen service bieten ohne das Wissen des Inneren zu liefern. Eine einfache Struktur mit Basiselementen ist keine Schnittstelle, das ist alles. – galop1n

Antwort

1

DirectX-Schnittstellen verwenden das Component Object Model (COM).

nicht alle Aspekte der COM für DirectX verwendet, aber es folgt den Konventionen der Verwendung von „I“, um anzuzeigen, Schnittstellen, Schnittstellen von IUnknown abgeleitet sind, die Referenzzählung Griffe und ‚Casting‘ von Schnittstellen durch QueryInterface und Schnittstellen sind so ausgelegt, direkt zu C++ abstrakten virtuellen Klassen zuordnen.

Die DirectX-Variante von COM wird oft informell COM Lite genannt. Der Hauptunterschied besteht darin, dass die Lebensdauer eines von einem Gerät erstellten untergeordneten Objekts sofort ungültig wird, wenn das Geräteobjekt zerstört wird. Auch bei "set" -Objekten werden ihre Referenzzählungen nicht erhöht, indem sie nur an die Rendering-Pipeline gebunden werden.

Siehe The Component Object Model

Sie sollten die Verwendung des ComPtr Smart-Pointer macht für die Arbeit mit Direct3D-Schnittstellen in Erwägung ziehen. Es macht das Leben viel einfacher.

BTW Sie möchten vielleicht etwas Zeit zum Lesen von DirectX Tool Kit tutorials nehmen, die viele der Grundlagen von Direct3D abdeckt.