查看vulkan.h我看到了:
#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || .....
#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
#else
#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
#endif
有没有人知道为什么64位?对我来说,总是使用ifdef的第一个案例
似乎更合理答案 0 :(得分:5)
在spec it explicitly says中,不可分派的句柄必须是64位:
不可分派的句柄类型是64位整数类型,其含义 是依赖于实现的,并且可以编码对象信息 直接在句柄中而不是指向软件结构。 不可分派类型的对象可能没有唯一的句柄值 在类型内或跨类型。如果句柄值不唯一,那么 销毁一个这样的句柄不得导致其他句柄相同 类型变为无效,并且不得导致相同的句柄 如果已创建更多句柄值,则相同类型将变为无效 时间比它被摧毁了。