Link

Acessando comandos principais do Vulkan

Por padrão, o Qt não se vincula a nenhuma biblioteca Vulkan. Em vez disso, todas as funções são resolvidas dinamicamente em tempo de execução. Cada objeto QVulkanInstance fornece um objeto QVulkanFunctions recuperável via QVulkanInstance::functions(). Esse objeto não contém funções de nível de dispositivo para evitar a sobrecarga potencial de um despacho interno. Em vez disso, funções que dependem de um dispositivo, ou um objeto filho despachável de um dispositivo, são expostas por meio do objeto QVulkanDeviceFunctions recuperável via QVulkanInstance::deviceFunctions(). QVulkanFunctions e QVulkanDeviceFunctions juntos fornecem acesso ao núcleo completo da API Vulkan, excluindo quaisquer extensões.

Normalmente as funções de QVulkanDeviceFunctions no renderizador são muito usadas, portanto, um padrão comum é adicionar o campo privado QVulkanDeviceFunctions *m_deviceFunctions à classe Renderer e inicializá-lo na função virtual initResources():

void Renderer::initResources() {
    VkDevice device = m_window->device();
    m_deviceFunctions = m_window->vulkanInstance()->deviceFunctions(device);
}

Não podemos nos esquecer de adicionar a função pública void initResources() override; e #include <QVulkanDeviceFunctions> em renderer.h.

Quanto aos tipos de dados do Vulkan podemos usá-los diretamente sem nos preocuparmos com os detalhes da plataforma. É o suficiente ter os cabeçalhos do SDK Vulkan presentes no sistema.


Anterior Próximo