opengl - 计算与图形的依赖关系

标签 opengl graphics vulkan

我正在计算着色器中执行行进立方体算法。计算阶段生成的顶点将输入到顶点阶段。

Compute -> Vertices -> Render

无法知道计算阶段将输出多少个顶点,因此我需要一个如下所示的存储缓冲区:

layout(set = 1, binding = 0) buffer Count{
  int value;
} count;

layout(set = 2, binding = 0) buffer Mesh {
  vec4 vertices[1<<15];
} mesh;

顶点不需要往返 CPU,但计数是 vkCmdDraw 命令使用的变量。因此,我需要将计数缓冲区放入主机可见内存中,映射该内存并在计算阶段后执行 memcpy。这是解决这个问题的好方法还是有其他方法可以让我不必将数据读回CPU?

最佳答案

嗯,这正是vkCmdDrawIndirect是为了.顶点计数存储在 Vkuffer 中,这使得 CPU 往返变得不必要。

关于opengl - 计算与图形的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60928153/

相关文章:

在 Vulkan 中将可变长度数组发送到 GLSL 的 C++ 语法

gtk - GtkGLArea 小部件 (GTK+) 的 Vulkan 等价物是什么?

graphics - 在 Vulkan 中生成 mipmap

graphics - “光栅”是特定格式还是通用术语(关于CUPS打印库)

c++ - macOS 上莫名其妙的 OpenGL 着色器行为

opengl - 将 FBO 复制到 VBO 时出错

opengl - 缩放随机 3D 模型以适合视口(viewport)

java - 使用鼠标事件 : Am I doing this correctly?

algorithm - 沿 "Bresenham line"的线性插值

c++ - OpenGL - 在 Windows 上显示视频流的桌面