【发布时间】:2020-01-14 11:26:19
【问题描述】:
我想执行顶点缓冲区更新。 我从空缓冲区开始,我将添加新点。添加点的数量与帧无关。它可以每帧一个,很少或没有。
在 OpenGL 中,我只是为将要添加的所有点分配内存(恒定的最大大小),使用 glBufferSubData 并修改将被渲染的点数(因此只有部分缓冲区可见)。
在 Vulkan 中 - 我想我需要使用具有恒定最大大小的 createBuffer 但是修改呢?我没有找到它的“专用”方法。 我在想:
void* data;
vkMapMemory(src, data);
memcpy(data, modifiedInput);
vkUnmapMemory(src);
VkBufferCopy copyParams = {};
copyRegion.srcOffset = currOffset;//starting from last point in buffer
copyRegion.dstOffset = copyRegion.srcOffset;
copyRegion.size = size;
vkCmdCopyBuffer(src, dest, copyParams);
currOffset += size;
我不确定这是正确的方法。在这种情况下我需要重新创建命令缓冲区还是应该使用完全不同的方法?
【问题讨论】: