Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Vulkan vkCreateImage包含3个组件_C++_Vulkan - Fatal编程技术网

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,然后再次保存。

典型的支持检查可能是:?(假设需要最佳平铺)