在Vulkan c++ API中,physical_device.getMemoryProperties().memoryTypes
返回MemoryPropertyFlags
的示例,也称为Flags<MemoryPropertyFlagBits>
。我想简单地恢复位掩码,以便轻松地将其与MemoryPropertyFlagBits
匹配,用于缓冲区创建请求。
我意识到这是一个简单的问题,但由于某种原因,我无法找到任何信息的旗帜和导航,虽然标题导致我无处可去。从clang completion中我所知道的是Flags有一些二元运算符。
1条答案
按热度按时间mwg9r5ms1#
在vulkan.hpp中,Flags类定义为
Flags类可以通过传入位类型或底层类型(
VkMemoryPropertyFlagBits
是一个枚举,底层类型可能类似于int
)来构造。有一个显式的运算符来获取基础值,可以通过将Flags类静态转换为基础类型来访问该值。您也可以在编译标志中声明VULKAN_HPP_FLAGS_MASK_TYPE_AS_PUBLIC
,并直接访问掩码。当然,还定义了所有必要的操作符,以与Flags类交互,就好像它是一个原始整数一样。假设
VkFlags
是一个uint32_t
,我不知道为什么他们不提供VkFlags
的隐式或显式转换。最安全的方法可能是
这将始终将其转换为正确的类型(使用错误的类型将产生编译错误),并且
MaskType
和VkFlags
之间的转换应该是隐式的。