使用fences清理命令缓冲区并同时同步交换链图像

2024-02-05

假设我有一个交换链,其中包括n图像和我允许k“飞行中的帧”。我确保之间的正确同步vkAcquireNextImageKHR, vkQueueSubmit and vkQueuePresentKHR通过一组信号量imageAvailableSemaphore and renderFinishedSemaphore和栅栏imageInFlight就像它是在本教程 https://vulkan-tutorial.com/Drawing_a_triangle/Drawing/Rendering_and_presentation:

imageAvailableSemaphores.resize(MAX_FRAMES_IN_FLIGHT);
    renderFinishedSemaphores.resize(MAX_FRAMES_IN_FLIGHT);
    inFlightFences.resize(MAX_FRAMES_IN_FLIGHT);

需要栅栏来确保在 GPU 完成消耗相应图像之前我们不会再次使用信号量。因此,这个栅栏需要在vkQueueSubmit.

另一方面,我正在独立于“飞行中的帧”创建命令缓冲区。它们是“一次性提交”命令缓冲区。因此,一旦提交,我就把它们添加到“待删除”列表中。我需要知道 GPU 何时完成此列表中命令缓冲区的执行。

但我无法指定另一个栅栏vkQueueSubmit。我怎么解决这个问题?


I allow k“飞行中的帧”

嗯,这就是你的答案。将为“帧”提供命令缓冲区的每个线程都应该有多个k命令缓冲区。他们应该以环形缓冲区的方式使用它们。这些命令缓冲区应该从瞬态分配池创建。当他们从环形缓冲区中选择最近最少使用的 CB 时,他们应该在记录到其中之前重置它。

确保没有线程尝试重置仍在使用的 CBstarting下一帧的任何工作直到k过去的第 1 帧已完成(使用栅栏)。

如果由于某种原因你绝对cannot告诉你的线程什么k是在前面的,你仍然需要告诉他们某物。当您开始在线程上工作时,您需要告诉他们还有多少帧仍在战斗中。这允许他们根据帧数检查环形缓冲区的大小。如果环形缓冲区中的元素数量小于帧数量,则环形缓冲区中最旧的CB不被使用。否则,它必须从池中分配一个新的 CB 并将其推入环形缓冲区。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用fences清理命令缓冲区并同时同步交换链图像 的相关文章

  • 如何逐像素绘制任意方向的椭圆?

    我必须逐像素绘制任意大小和方向的椭圆 绘制一个长轴和短轴与 x 轴和 y 轴对齐的椭圆似乎很容易 但将椭圆旋转任意角度似乎更棘手 最初 我认为绘制未旋转的椭圆并对每个点应用旋转矩阵可能会起作用 但似乎这可能会导致舍入错误 而且我需要相当高的
  • 获取任何给定字符的宽度(以像素为单位)

    我有一个非常棒的想法 但无法找出 NET Framework 中是否有任何类 任何版本 最好是 3 5 或 4 0 允许您传入字符 并获取该字符的宽度 以像素为单位 无论使用哪种字体 字体大小或字体装饰 有人可以指出我正确的方向吗 像这样的
  • 为什么这个简单的 C# 试用不起作用 [重复]

    这个问题在这里已经有答案了 这会产生条纹而不是点 为什么 我正在尝试绘制单个像素 还尝试了另一种方法 使用 fillrectangle 它也没有给出所需的结果 得到的是条形而不是点 protected override void OnPai
  • 使用拼凑将组合子图(拼凑?)注释为单个图

    我试图弄清楚如何注释组合拼凑物 就好像它们是单独的图一样 我有一个由三个组合图和另一个单个图组成的拼凑而成 最终的复合图是顶部的第一个拼凑物和底部的单独图 我没有问题得到我想要的布局 但是当我使用plot annotation 它为每个图提
  • 有没有 Android Drawable 设计师?

    我想在我的 Android 应用程序中使用更多矢量图 提供图像并不像我希望的那样节省空间或可扩展 Android提供了一系列可绘制文件格式 http developer android com guide topics resources
  • 仅使用本机库的 C# 简单游戏

    我可以找到一组java 2D 游戏教程 http zetcode com tutorials javagamestutorial and 安卓游戏教程 http obviam net index php table of contents
  • 在 C# 中使用鼠标单击在图片框上绘制线条

    我正在尝试制作一个程序 可以在图片框 http msdn microsoft com en us library system windows forms picturebox 28v vs 110 29 aspx使用鼠标单击要绘制线的起点
  • 使用 AffineTransform 将形状缩放/转换为给定矩形

    我正在尝试缩放 翻译 java awt Shape with 仿射变换为了将其绘制在定义的边界矩形中 此外 我想在具有 的绘图区域中绘制它zoom 范围 我尝试了 AffineTransform 的各种串联 但找不到正确的序列 例如 以下解
  • 如何在pdf中导出一对一的JTable[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 JTable 标题没有出现在图像中 https stackoverflow com questions 7369814 why does the jtable header not appea
  • Phong 着色问题

    我正在根据以下内容编写着色器冯模型 http en wikipedia org wiki Phong reflection model 我正在尝试实现这个方程 其中 n 是法线 l 是光线方向 v 是相机方向 r 是光反射 维基百科文章中更
  • Android 中的离屏绘图

    android 中是否可以像 Objective C 中的 imageContext 那样进行离屏绘图 如果有的话 请告诉我链接或某种提示 多谢 我相信您正在寻找Canvas http developer android com refer
  • C# 窗口形式的漂亮图形

    我需要使用 C 在 Windows 窗体中创建一些简单的图形 简单地说 我指的是线条 圆圈等 但是 当我画画时 例如实心圆 边缘不平滑 正如使用方形像素绘制圆时所预期的那样 但是当在矢量程序中使用相同数量的像素绘制相同的圆时 它看起来很完美
  • 用于预乘 ARGB 的 SSE alpha 混合

    我正在尝试编写一个支持 SSE 的 alpha 合成器 这就是我想出的 首先 混合两个 4 像素向量的代码 alpha blend two 128 bit 16 byte SSE vectors containing 4 pre multi
  • 预乘 Alpha 合成

    我正在尝试实现预乘阿尔法混合 在本页 什么是颜色混合 https learn microsoft com en us previous versions windows xna bb976070 v xnagamestudio 41 它们确
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp
  • 我应该如何缓冲绘制的矩形以提高性能(C#/.NET/WinForms/GDI+)

    我在做什么 我正在开发一个 C NET 4 7 2 WinForms 应用程序 它使用以下命令在表单上绘制大量填充矩形Graphics FillRectangle https learn microsoft com en us dotnet
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 在 Vulkan 中,图形队列系列与当前队列系列分离是否有益?

    据我所知 队列系列可能支持呈现到屏幕但不支持图形 假设我有一个同时支持图形和呈现的队列系列 以及另一个仅支持呈现的队列系列 我应该为两个进程使用第一个队列系列 还是应该将第一个队列系列委托给图形 将后者委托给呈现 或者这两种方法之间没有明显
  • 什么是稀疏体素八叉树?

    我读了很多关于稀疏体素八叉树在未来图形引擎中的潜在用途的文章 但是我一直无法找到有关它们的技术信息 我理解体素是什么 但是我不知道稀疏体素八叉树是什么 或者它们如何比现在使用的多边形技术更有效 有人可以解释或指出我对此的解释吗 这是一个关于
  • 带孔的多边形三角剖分

    我正在寻找一种算法或库 更好 将多边形分解为三角形 我将在 Direct3D 应用程序中使用这些三角形 最好的可用选项是什么 这是我到目前为止发现的 本 迪斯科的笔记 http www vterrain org Implementation

随机推荐