C++ Vulkan vkCreateImage包含3个组件
我正在尝试将C++ Vulkan vkCreateImage包含3个组件,c++,vulkan,C++,Vulkan,我正在尝试将vkCreateImage与三分量图像(rgb)一起使用。 但是所有的rgb格式都给出: vkCreateImage格式参数(VK_format_R8G8B8_xxxx)是不受支持的格式 这是否意味着我必须重塑内存中的数据?因此,在每个3后面添加一个空字节,然后将其加载为RGBA? 我还注意到R8和R8G8格式确实有效,因此我猜不支持RGB的唯一原因是因为3不是2的幂 在我真正对数据进行重塑之前,我想确定这是唯一的方法,因为这对性能不是很好,可能有一些偏移量或填充值可以帮助将RGB数
vkCreateImage
与三分量图像(rgb
)一起使用。
但是所有的rgb
格式都给出:
vkCreateImage格式参数(VK_format_R8G8B8_xxxx)是不受支持的格式
这是否意味着我必须重塑内存中的数据?因此,在每个3后面添加一个空字节,然后将其加载为RGBA
?
我还注意到R8
和R8G8
格式确实有效,因此我猜不支持RGB
的唯一原因是因为3不是2的幂
在我真正对数据进行重塑之前,我想确定这是唯一的方法,因为这对性能不是很好,可能有一些偏移量或填充值可以帮助将RGB
数据加载到RGBA
格式。因此,是否有人可以确认,将RGBA重塑为RGBA
是加载RGB
格式的必要步骤(尽管有33%的开销)
提前感谢。首先,在尝试创建图像之前,您应该检查支持哪些功能。你不应该依靠验证层来阻止你;这只是一个调试帮助,当你忘记检查的时候,可以捕捉到一些东西。支持和不支持的是动态的,而不是静态的。它基于您的实现。因此,每次应用程序启动时,您都必须询问您打算使用的格式是否可用 如果他们不是,那么你必须相应地计划 其次,是的,如果您的实现不支持3通道格式,那么您需要用4通道格式模拟它们。您必须重新调整数据以适应新格式
如果您不喜欢这样做,我相信您可以使用图像编辑器加载图像,添加不透明alpha 1.0,然后再次保存。典型的支持检查可能是:?(假设需要最佳平铺)