【发布时间】:2016-10-07 13:27:00
【问题描述】:
我不知道如何将Vulkan API header file 的下一部分编组以供 C# 使用:
#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
...
VK_DEFINE_HANDLE(VkInstance)
以后需要在这个方法中使用:
VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
const VkInstanceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkInstance* pInstance
);
指向vkInstance,好的。但是,这是什么神奇的东西:typedef struct object##_T* object; 宏风格(预处理器)?
【问题讨论】:
-
我只是在 C# 中创建了一个结构,确保类型大小与 c++ 相同。不需要元帅。
-
VkInstance,以及所有其他不可调度的 Vulkan 句柄,只是(是)指向通用结构的指针。
-
如果您有兴趣,我们中的一些人已经为 Vulkan 编写了 C# 绑定 - github.com/FacticiusVir/SharpVk/blob/master/SharpVk/SharpVk/…
-
@FacticiusVir 谢谢 :) 太好了
标签: c# c++ pinvoke marshalling vulkan