Acessando o buffer de vértice no vertex shader
Primeiro, alteramos o vertex shader para não incluir mais os dados de vértice no próprio código do shader. O vertex shader recebe a entrada de um buffer de vértice usando o qualificador de tipo in
.
#version 450
layout(location = 0) in vec3 inPosition;
layout(location = 1) in vec3 inColor;
layout(location = 0) out vec3 fragColor;
void main() {
gl_Position = vec4(inPosition, 0.0, 1.0);
fragColor = inColor;
}
Nós especificamos dois atributos de entrada (denominados inPosition
e inColor
). No Vulkan, todos os atributos devem ter um qualificador de layout de local através da anotação layout(location = x)
. Quando especificamos uma descrição dos atributos de vértice na API Vulkan, os nomes desses atributos não importam, apenas seus índices/locais. No OpenGL, poderíamos pedir uma localização de um atributo com um determinado nome. No Vulkan não podemos fazer isso.
Agora, o vertex shader precisa ser recompilado. Para isso, podemos fechar e reabrir o projeto no Qt Creator que automaticamente a instrução no arquivo .pro
para executar o glslangValidator
é executada novamente1.
1 Outra forma de executar essa instrução é fazer alguma modificação no arquivo
.pro
no Qt Creator e, em seguida, desfazer essa modificação e salvar novamente o arquivo.pro
.