Создание единообразных буферов в Vulkan - PullRequest
0 голосов
/ 06 февраля 2019

У меня проблема с рисованием ячеек в Вулкане.Я хочу привязать UniformBufferObject в следующей форме к объекту.

void mainLoop() {
     ..
     vulkanDrawing.Draw();
     plane.UpdateUniformBuffers();
     ..
}

Чтобы получить currentImage, я создал метод SetCurrentImage (uint32_t currentImage).SetCurrentImage устанавливается из метода VulkanDrawing :: Draw ().Это текущее изображение используется в UpdateUniformBuffers ().Я получаю только черный экран, если я запускаю это приложение.Так как я хочу увидеть квадрат.В прошлом я вызывал метод UpdateUniformBuffers с параметром imageIndex в VulkanDrawing :: Draw ().Я думаю, что это может быть проблема с заборами или семафорами.Но я не знаю, как это исправить.Использую ли я в конечном итоге неправильную архитектуру?

Я приложил важные методы:

void CVulkanDrawing::Draw()
{
    vkWaitForFences(m_LogicalDevice.getDevice(), 1, &inFlightFences[currentFrame], VK_TRUE, std::numeric_limits<uint64_t>::max());
    vkResetFences(m_LogicalDevice.getDevice(), 1,inFlightFences[currentFrame]);

    uint32_t imageIndex;
    vkAcquireNextImageKHR(m_LogicalDevice.getDevice(), m_Presentation.GetSwapChain(), std::numeric_limits<uint64_t>::max(), imageAvailableSemaphores[currentFrame], VK_NULL_HANDLE, &imageIndex);

    for(unsigned int i = 0; i < m_VulkanMesh.size(); i++)
    {
        //m_VulkanMesh.at(i).UpdateUniformBuffers(imageIndex);
        m_VulkanMesh.at(i).SetCurrentImage(imageIndex);
    }

    VkSubmitInfo submitInfo = {};

    ...

    currentFrame = (currentFrame + 1) % MAX_FRAMES_IN_FLIGHT;
}

void CVulkanMesh::UpdateUniformBuffers()
{
    ...

    vkMapMemory(m_LogicalDevice.getDevice(), uniformBuffersMemory[this->m_CurrentImage], 0, sizeof(ubo), 0, &data);
    memcpy(data, &ubo, sizeof(ubo));
    vkUnmapMemory(m_LogicalDevice.getDevice(), uniformBuffersMemory[this->m_CurrentImage]);
}

void CVulkanMesh::SetCurrentImage(uint32_t currentImage)
{
     this->m_CurrentImage = currentImage;
}

Я дополнительно создал ветку с именем: https://github.com/dekorlp/VulkanWrapper/tree/VulkanTest

Я надеюсь, что вы можетепомогите мне:)

С наилучшими пожеланиями

Pixma

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...