Graphics Vulkan-不使用顶点和着色器直接绘制纹理

Graphics Vulkan-不使用顶点和着色器直接绘制纹理,graphics,textures,rendering,framebuffer,vulkan,Graphics,Textures,Rendering,Framebuffer,Vulkan,是否可以绘制纹理(如果宽度、高度和像素格式正确)直接到帧缓冲区而不使用Vulkan中的顶点和着色器?您可以执行vkCmdCopyImage从vkImage复制到交换链的vkImage,前提是vkSurface支持从VGGetPhysicalDeviceSurfaceCapabilitiesKHR的结果 否则,您需要进行全屏渲染,并从输入图像中获取颜色数据作为采样纹理或输入附件。对下层选民说:我猜他正在寻找类似于Vulkan API中OpenGL的glDrawPixels()/glDrawBuff

是否可以绘制纹理(如果宽度、高度和像素格式正确)直接到帧缓冲区而不使用Vulkan中的顶点和着色器?

您可以执行
vkCmdCopyImage
vkImage
复制到交换链的
vkImage
,前提是
vkSurface
支持从
VGGetPhysicalDeviceSurfaceCapabilitiesKHR
的结果


否则,您需要进行全屏渲染,并从输入图像中获取颜色数据作为采样纹理或输入附件。

对下层选民说:我猜他正在寻找类似于Vulkan API中OpenGL的glDrawPixels()/glDrawBuffer()的东西,它启用了直接绘制到帧缓冲区。虽然绘制一个没有透视投影和ZBuffer write的全屏纹理四边形是一个直截了当的解决方案,但这仍然是一个有效的问题。@NicolBolas抱歉,但你太难了。Vulkan是一个可怕的新事物,有一个巨大的文档和巨大的结构。这在任何方面都不是微不足道的。我猜StackOverflow的建议是在谁知道谁不知道之间架起桥梁。我同意Alex的观点-有很多文档需要查看,如果您还没有使用Vulkan,正在阅读文档以决定是否要使用它,那么您可能不会意识到
vkCmdCopy*
命令就是您想要的。大多数小示例显示如何使用索引和顶点进行绘制,而不是直接使用纹理副本。我提出了一些问题,文档中有一些章节可以回答这些问题,但我没有找到。如果您还需要缩放、过滤或格式转换,也可以使用
vkcmdblimitimage
vkCmdCopyImage
直接获取内存的一个副本,这并不总是有用的。但是请注意,这需要源格式支持
VK\U format\u功能的BLIT\u SRC\u位
,目标格式支持
VK\u format\u功能的BLIT\u DST\u位
。这种情况可能并不总是如此,因此如果您要使用blit,请先检查这些。