2016-06-03 6 views
1

Zuerst frage ich mich über einige kleinere Details zu sehen, ob ich richtig, einige Konzepte verstehen:Was unterscheidet verschiedene Vulkan Loader voneinander?

  • Ist vulkan-1.dll (oder libvulkan.so.1 auf Linux), was als Lader bezeichnet wird?
  • Wenn ich HMODULE vulkan_module = LoadLibrary("vulkan-1.dll"); verwende, verwendet dies den Loader vom Grafiktreiber (vorausgesetzt, dass das vorherige Detail wahr ist)?

Jetzt zur eigentlichen Frage. Es scheint, dass der Loader dafür verantwortlich ist, Treiber zusammen zu ziehen, um sie als eine "Einheit" erscheinen zu lassen, sowie verfügbare Erweiterungen und Validierungsebenen zu sammeln. Was unterscheidet dann beispielsweise den LunarG Loader von den Grafiktreibern? Warum sollte man eines über dem anderen benutzen wollen?

+0

"LoadLibrary (" vulkan-1.dll ")" "Sie möchten diese Bibliothek manuell laden, anstatt die Importbibliothek zu verwenden? –

+0

Ich folge einer Anleitung, um mit dem Lernen von Vulkan zu beginnen und so hat der Autor es gewählt. Nachdem ich die Programmierung mit VS gelernt habe, sind die Anforderungen an die Bibliothek mehr oder weniger automatisch erledigt worden, so dass ich keine Erfahrung mit dem Import von Bibliotheken im Allgemeinen habe. Aber das ist eine Frage für sich. –

Antwort

0

Vulkan-Treiber enthalten nichts, was vernünftigerweise als "Loader" bezeichnet werden würde. Sie sind "Anbieter".

Der Zweck eines "Loader" ist es, zu laden, was die "Anbieter" bieten. Die einfachste Sache, die ein Loader tut, ist, die DLLs der Implementierungen zu finden und mit ihnen zu interagieren. Dies unterscheidet sich je nach Plattform. Unter Windows verwenden sie wahrscheinlich Registrierungseinstellungen, um die Implementierungs-DLLs zu finden. Bei Android zentralisiert der eingebaute Support wahrscheinlich die Dinge. Und so weiter.

Der einzige häufig verwendete Loader ist der SDK-Loader von LunarG (der den Dateinamen vulkan-1 verwendet). Einige haben ihre eigene geschrieben, aber LunarG ist die einzige mit weit verbreiteter Nutzung.

0

"der loader" oder "offizielle loader" oder "Khronos loader" oder "LunarG loader" oder "VulkanRT" sind AFAIK gleich. Es ist aus dem Projekt KhronosGroup/Vulkan-LoaderAndValidationLayers.

Was unterscheidet (zwischen denen von der Khronos, LunarG SDK und Treiber zur Verfügung gestellt) ist in der Regel nur eine Version. (Typischerweise liegt das LunarG SDK hinter Khronos und der Treiber bleibt hinter beiden zurück.)

Mehr als Sie schon immer wissen wollten, ist die innere Funktionsweise in der loader documentation.

Laufzeit dynamische Verknüpfung wie Sie vorschlagen sollte möglich sein (Sie würden die LoadLibrary() dann GetProcAddress() die vkGetInstanceProcAddr() Befehl und dann Ruhe von ihm).

(Unter Windows) Ich denke, die meisten Leute verwenden die praktische DLL-Import-Bibliothek vulkan-1.lib von LnG SDK mit was auch immer vulkan-1.dll ist in der System32.

Verwandte Themen