Hier ist mein soweit kompletter automatlischer generierter Vulkan Header für Delphi und FreePascal:
https://github.com/BeRo1985/pasvulkan/
Support für alle von Vulkan unterstützten Targets sind vorhanden, jedoch muss ich da noch fürs Android/arm7a Targets eine Calling-Convention-Proxy Mechanik implementieren.
Mein vkxml2pas-generierter Header hat zumindest folgendes Ladeinterface:
Code: function LoadVulkanLibrary(const LibraryName:string=VK_DEFAULT_LIB_NAME):boolean; function LoadVulkanGlobalCommands:boolean; function LoadVulkanInstanceCommands(const GetInstanceProcAddr:TvkGetInstanceProcAddr;const Instance:TVkInstance;out InstanceCommands:TVulkanCommands):boolean; function LoadVulkanDeviceCommands(const GetDeviceProcAddr:TvkGetDeviceProcAddr;const Device:TVkDevice;out DeviceCommands:TVulkanCommands):boolean; overload; function LoadVulkanDeviceCommands(const GetDeviceProcAddr:TvkGetDeviceProcAddr;const Device:TVkDevice;out DeviceCommands:TVulkanDeviceCommands):boolean; overload;
wo LoadVulkanLibrary nur vkGetInstanceProcAddr lädt, und LoadVulkanGlobalCommands lädt dann den Rest mithilfe vkGetInstanceProcAddr(nil,*) (wie die Vulkan Spec irgendwo es empfiehlt), und LoadVulkanInstanceCommands und LoadVulkanDeviceCommands sollen klar sein, wofür die da sind, wenn man die Vulkan Spec gelesen hat.
Zudem gibt es auch eine TVulkan Klasse, worüber zukünftig auch dann das fürs Android/armv7a Target erforderliche Calling-Convention-Proxy ablaufen wird. Und es gibt zudem auch eine default-globale TVulkan Instanz namens vk, so dass man statt z.B. vkCreateInstance auch vk.CreateInstance verwenden kann (mit automatischem Calling-Convention-Proxing-Krams dann).
|