Я хочу выполнить обновление буфера вершин. Я начинаю с пустого буфера и буду добавлять новые точки. Количество добавленных очков не зависит от кадра. Это может быть по одному на кадр, несколько или ни одного.
В 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;
Я не уверен, что это правильный путь. Нужно ли заново создавать командные буферы в этом случае или я должен использовать совершенно другой подход?