4

我正在尝试使用vkCreateImage3 分量图像 ( rgb)。但是所有rgb格式都给出:

vkCreateImage format parameter (VK_FORMAT_R8G8B8_xxxx) is an unsupported format

这是否意味着我必须重塑内存中的数据?所以在每个 3 之后添加一个空字节,然后将其加载为RGBA? R8我也注意到R8G8格式确实有效,所以我猜唯一的原因RGB是不支持,因为 3 不是 2 的幂。

在我实际对数据进行这种重塑之前,我想确定这是唯一的方法,因为它对性能不是很好,并且可能在某处有一些偏移或填充值有助于将RGB数据加载到RGBA格式。那么有人可以确认重塑为RGBA加载RGB格式的必要步骤(尽管有 33% 的开销)?

提前致谢。

4

1 回答 1

2

首先,您应该在尝试创建映像之前检查支持的内容。你不应该依赖验证层来阻止你;这只是在您忘记检查时捕获某些东西的调试辅助工具。支持和不支持的内容是动态的,而不是静态的。它基于您的实现。因此,您必须在每次应用程序启动时询问您打算使用的格式是否可用。

如果他们不是,那么你必须相应地计划。

其次,是的,如果您的实现不支持 3 通道格式,那么您需要使用 4 通道格式来模拟它们。您将不得不重新调整您的数据以适应您的新格式。

如果您不喜欢这样做,我相信您可以使用图像编辑器来加载图像,添加 1.0 的不透明 alpha,然后再次保存。

于 2016-07-15T13:05:48.140 回答