当我尝试通过 _.filter(cities ,function(i){
var f=_.filter(i,function(t){return t>19});
return f.length>2;
});
创建帧缓冲区时,我的调试报告回调中出现了关于vkCreateFramebuffer
附件中的冲突的错误。它说我的图像视图在他们的图像使用中存在冲突,而我不期待这个错误,因为通常其中一个必须是颜色附件而另一个必须是深度-stencil attachement。
确切的错误消息是:
帧缓冲附件(0)与图像的IMAGE_USAGE标志(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)冲突。
我甚至已经看过其他例子,它们完全一样。
我的源代码(Rust):
https://github.com/Hossein-Noroozpour/vulkust/blob/master/src/vulkan/swapchain.rs#L218
答案 0 :(得分:2)
帧缓冲区中图像的使用由renderpass定义。这意味着如果在渲染通道中将附件0用作深度/模板,则需要使用VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
这意味着您需要仔细检查传递给渲染通道创建的子通道描述,并确保您没有意外地将附件0用作深度。
答案 1 :(得分:1)
好吧,我可以解释错误是如何工作的。如果有疑问,挖掘层源代码是有用的:
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/tree/master/layers
它将在vkCreateFramebuffer()
上发布。
它将检查提供的渲染过程及其子视图与图像视图。
如果VkImageView
至少使用一次作为输入附件,那么它希望使用VkImage
创建VkImageView
的{{1}}。
同样适用于VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
的彩色附件和VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
的DS附件。
检查您是否符合这些要求
层错也是一件事。如果您正在运行最新的并确认错误,则报告属于此处:
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues
更新(看到您的源代码后):
我没看到你设置VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
的位置。您将其预初始化为depth_reference.attachment
,这可能意味着您将颜色附件指定为子通道的深度。