Link

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.


Anterior Próximo