Link

Vinculando o buffer de vértice

Tudo o que resta agora é vincular o buffer de vértice durante as operações de renderização. Nós vamos estender a função startNextFrame para fazer isso.

...
VkBuffer vertexBuffers[] = {m_object->vertexBuffer};
VkDeviceSize offsets[] = {0};
m_deviceFunctions->vkCmdBindVertexBuffers(
	commandBuffer,
	0,
	1,
	vertexBuffers,
	offsets
);

VkBuffer vertexBuffers[] = {m_object->vertexBuffer};
VkDeviceSize offsets[] = {0};
m_deviceFunctions->vkCmdBindVertexBuffers(
	commandBuffer,
	0,
	1,
	vertexBuffers,
	offsets
);

m_deviceFunctions->vkCmdDraw(
	commandBuffer,
	static_cast<uint32_t>(m_object->model->vertices.size()),
	1,
	0,
	0
);

m_deviceFunctions->vkCmdEndRenderPass(commandBuffer);

A função vkCmdBindVertexBuffers é usada para vincular buffers de vértices a ligações, como as que configuramos anteriormente. Os dois primeiros parâmetros, além do buffer de comando, especificam o deslocamento e o número de ligações para as quais especificaremos os buffers de vértices. Os dois últimos parâmetros especificam o array de buffers de vértices para ligar e os offsets de bytes para iniciar a leitura de dados de vértices. Também devemos alterar a chamada para vkCmdDraw para passar o número de vértices no buffer, em oposição ao número codificado 3.

Se executarmos o programa agora e deveremos ver o mesmo triângulo que da última vez, só que agora os dados dos vértices são lidos a partir de um buffer de vértice.

No próximo capítulo, implementaremos o mapeamento de textura para tornar a geometria mais interessante.


Anterior Próximo