Link

Comandos básicos de desenho

Agora que temos todos os recursos necessários para desenhar nosso primeiro triângulo na tela. Podemos vincular o pipeline gráfico. Isso é feito chamando a função vkCmdBindPipeline. Isso “ativa” todos os programas de shader (semelhante à função glUseProgram do OpenGL) e define testes desejados, operações de blending e assim por diante.

m_deviceFunctions->vkCmdBindPipeline(
	commandBuffer,
	VK_PIPELINE_BIND_POINT_GRAPHICS,
	m_graphicsPipeline
);

O segundo parâmetro dessa função especifica se o objeto de pipeline é um pipeline gráfico ou de computação.

Depois que o pipeline é vinculado, podemos finalmente desenhar algo chamando a função vkCmdDraw:

m_deviceFunctions->vkCmdDraw(commandBuffer, 3, 1, 0, 0);

Nessa função, especificamos o número de vértices que queremos desenhar (três), o número de instâncias que devem ser desenhadas (apenas uma) e números ou índices de um primeiro vértice e primeira instância (ambos zero).

Por fim, chamamos a função vkCmdEndRenderPass, o que, como o nome sugere, encerra o render pass dado:

m_deviceFunctions->vkCmdEndRenderPass(commandBuffer);

Se fizemos tudo corretamente até este ponto, então devemos ver algo parecido com o mostrado na Figura 7 quando executarmos nosso programa.

Figura 7 – Primeiro triângulo usando Vulkan

Neste capítulo, realizamos operações de desenho “reais”. Um triângulo simples pode não parecer muito convincente, mas é um bom ponto de partida para uma primeira imagem criada usando Vulkan. No próximo capítulo vamos nos livrar dos vértices codificados no vertex shader e realmente usar um buffer de vértices.


Anterior Próximo