LWJGL Vulkan: ничего не рисуется при добавлении буфера второй вершины - PullRequest
0 голосов
/ 23 мая 2018

Я создал небольшую программу с lwjgl, которая отображает цветной треугольник, используя Vulkan, сначала я отправлял все необходимые данные в мои шейдеры через буфер одной вершины (цвет + позиция).Зная, что лучше всего использовать только один буфер вершин, я все же хотел попробовать отправить позиции и цвета через 2 разных буфера вершин

Чтобы добавить свой второй буфер вершин, я создал его таким жеСоздав первое, я добавил привязку и присвоил ей второй атрибут следующим образом:

VkVertexInputBindingDescription.Buffer bindingDescriptor = VkVertexInputAttributeDescription.calloc(2)
    .binding(0)
    .stride(2 * 4)
    .inputRate(VK_VERTEX_INPUT_RATE_VERTEX);
//I added this
bindingDescriptor.binding(1)
    .stride(3 * 4)
    .inputRate(VK_VERTEX_INPUT_RATE_VERTEX);

VkVertexInputAttributeDescription.Buffer attributeDescription = VkVertexInputAttributeDescription.calloc(2)
    .get(0)
    .binding(0)
    .location(0)
    .format(VK_FORMAT_R32G32_SFLOAT)
    .offset(0);
attributeDescription.get(1)
    //changed the binding from 0 to 1
    .binding(1)
    .location(1)
    .format(VK_FORMAT_R32G32B32_SFLOAT)
    .offset(0);

, затем в определении прохода рендеринга я добавил свой второй буфер вершин в представленный буфер.на vkCmdBindVertexBuffers вот так:

LongBuffer offsets = memAllocLong(2);
offsets.put(0, 0L);
//added this
offsets.put(1, 0L);
LongBuffer pBuffers = memAllocLong(2);
pBuffers.put(0, verticesBuf);
//added this
pBuffers.put(1, colorBuf);
vkCmdBindVertexBuffers(renderCommandBuffers[i], 0, pBuffers, offsets);

Проблема в том, что когда я добавляю свой второй буфер вершин, больше ничего не отображается, остается только цвет фона. Я что-то пропустил?Есть ли что-то особенное, чтобы использовать несколько буферов вершин?

...