首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vulkan API中呈现传递的困惑

Vulkan API中呈现传递的困惑
EN

Stack Overflow用户
提问于 2016-09-17 20:58:23
回答 1查看 9.2K关注 0票数 9

最近我开始学习Vulkan API,有一些主题让我感到困惑,我的问题是什么是呈现传递,为什么它与命令缓冲区记录同时使用?最后,什么是子传递,子传递依赖和附件?通常与呈现传递相关。

EN

Stack Overflow用户

回答已采纳

发布于 2016-09-18 01:12:24

这是获得绘图的唯一方法(绘制命令只能在渲染传递中进行)。所以别想太多了。作为一个乞丐,你只需要创建一个渲染通行证与一个(强制性的)子传递,就这样。你以后可以了解它的深度。

此外,你也应该给一些机会,所有这些视频和教程,这些都是写得很长,更小心,比谁会在这里写在简短的格式。

等级库一个机会(它并不坏--但避免了冗余的语义和概念信息)。试着读一读AMD的一些介绍vulkan-tutorial.com30分钟后 (无论如何,这个帮助我开始了--嗯,当时没有更多的东西可用),无秘密API和观看,比如Vulkan会话Part1Part2

现在你听到了背后的一些人,看到了一些命令。你应该回到我们的更具体的方面,你不了解它。

好的,我只是在这里添加一些概念性的描述来正式回答这个问题。

渲染传递是一种图形作业的描述、地图或方案(它围绕着特定的组织/使用图像资源)。但它没有描述实际的命令或实际资源(这是在vkCmdBeginRenderPass()vkCmdEndRenderPass()之间的呈现传递实例的命令缓冲区记录中完成的)。

也许稍后提供实现的“黑匣子”或“类似C++的声明”是一个很好的类比。

呈现传递有一些附件。让我们把它们看作是对所需帧图像输出和临时人员的描述(而不是特定的帧图像本身)。

呈现传递有一些子传递。子通道描述在执行过程中将如何对待附件(例如,作为彩色图像布局中的颜色缓冲区)。

呈现传递有一些子传递依赖项。依赖项描述子传递之间的执行顺序(它形成依赖关系DAG)。依赖关系还描述了两个子通道之间或子通道与整个呈现传递外部之间的管道屏障(VK_SUBPASS_EXTERNAL依赖关系)。子传递可以按任何顺序执行,并且可以重叠(在驱动程序空闲时),除了在依赖项中描述的内容(或以其他方式同步)。

在使用vkCmdBeginRenderPass()的命令缓冲区中,您可以创建呈现传递实例(使用VkFramebuffer为附件提供实际图像,以及向附件写入的实际命令)。

呈现传递描述的一部分是自动执行的(图像布局转换、屏障和MSAA分辨率)。

对于其余部分,您将记录当前CB的renderpass实例的子传递命令。您按顺序对子传递0、1、2、3、4 --也就是说,而不是--使用子传递依赖关系描述了实际的执行顺序(否则将是驱动程序的空闲时间)。

然后将具有这种呈现传递实例化(Es)的命令缓冲区提交到队列中,并实际执行。

也许正是这些不确定的方向使它更难理解。命令在执行之前就会被记录下来。而渲染传递甚至在记录之前就创建了。:)

票数 22
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39551676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档