为什么Vulkan在采样时坚持该图像必须是FLOAT组件?



我的着色器索引到采样器和图像,但当我从图像采样(我只得到错误,如果我在着色器采样)我得到一个错误:

绑定#0索引0中的描述符需要FLOAT组件类型,但是绑定描述符格式为VK_FORMAT_R8G8B8A8_UINT。Vulkan规格states:每个绑定描述符集中的描述符,通过vkCmdBindDescriptorSets,如果它们被静态地使用,则必须有效VkPipeline绑定到该命令使用的管道绑定点

这是真的,我有罪绑定R8G8B8A8_UINT图像索引[0],我试着采样它,但为什么它坚持它应该是FLOAT组件类型?

我在我的着色器中像这样采样图像:

layout(set = 0, binding = 0) uniform texture2D textures[20];
layout(set = 0, binding = 1) uniform sampler samplers[4];
texture(sampler2D(textures[0], samplers[0]), vec2(inPosAndCoords.zw) ); 

错误触发。为什么它坚持图像的组件是FLOAT?

为什么它坚持为图像的组件是FLOAT?

因为这是你的着色器要求的。图像格式的基本类型被嵌入到图像的GLSL类型中。

texture2D是一个具有浮点格式的2D纹理。utexture2D是一个无符号整数格式的2D纹理。

最新更新