首先,我想知道一些细节,看看我是否理解了一些概念:
HMODULE vulkan_module = LoadLibrary( "vulkan-1.dll" );
时,是否使用图形驱动程序中的加载程序(假设前一个细节为真)?现在回答实际问题。看起来加载器负责将驱动程序拉到一起,使它们看起来像一个“单元”,以及收集可用的扩展和验证层。那么LunarG加载器(例如)与图形驱动程序提供的加载器有何不同?为什么一个人想要使用另一个呢?
答案 0 :(得分:0)
Vulkan驱动程序不包含任何合理称为“加载程序”的内容。他们是“提供者”。
“加载器”的目的是加载“提供者”提供的内容。加载器最基本的功能是找到实现的DLL并与它们进行交互。这根据平台而有所不同。在Windows中,他们可能使用注册表设置来搜索实现DLL。在Android上,他们的内置支持可能集中了一些东西。等等。
唯一常用的加载器是LunarG的SDK加载器(使用文件名vulkan-1
)。有些人写了自己的,但LunarG是唯一一个广泛使用的。
答案 1 :(得分:0)
“装载机”或“官方装载机”或“Khronos装载机”或“LunarG装载机”或“VulkanRT”与AFAIK相同。它来自项目KhronosGroup/Vulkan-LoaderAndValidationLayers。
Khronos,LunarG SDK和驱动程序之间的区别通常只是一个版本。 (通常LunarG SDK落后于Khronos,驱动程序落后于两者。)
然后你想知道它的内部运作是在loader documentation。
您建议的运行时动态链接应该是可能的(您可以执行LoadLibrary()
然后GetProcAddress()
vkGetInstanceProcAddr()
命令,然后从中休息。
(在Windows上)我想大多数人都使用LnG SDK中方便的dll导入库vulkan-1.lib
和System32中的任何vulkan-1.dll。