Vulkan - Как узнать, каков текущий макет изображения? - PullRequest
1 голос
/ 23 мая 2019

После рендеринга или некоторых других действий я хочу прочитать целевое изображение в процессор. Для этого необходимо сначала выполнить переход макета и изменить текущий макет изображения (старый макет) на новый, позволяющий перенести его данные в изображение сцены - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL.

Для операции перехода мне нужно указать как текущую, так и новую схему.

Но как мне узнать, каков текущий макет? - каждый проход рендеринга может устанавливать finalLayout на другое значение, он также может делать некоторые переходы, когда это было сделано ко времени.

Решение, которое я думаю, состоит в том, чтобы сохранить для каждого изображения его текущую разметку и установить его после каждого прохода рендеринга и после каждой операции перехода.

Это правильно?

1 Ответ

2 голосов
/ 23 мая 2019

Но как мне узнать, какой сейчас макет?- каждый проход рендеринга может устанавливать значение finalLayout на другое значение, а также, возможно, некоторые переходы, когда это было сделано ко времени.

Да, но вы создали эти проходы рендеринга.Вы дали команду использовать эти проходы рендеринга на этом изображении.Поэтому в любой точке потока команд вы знаете, в каком макете находится изображение.

Vulkan ожидает, что вы будете в курсе того, что вы сделали.Как вы справляетесь с этим, зависит от вас.Может быть, вы всегда оставляете изображение в цветовой привязке оптимальным.Возможно, вы явно отслеживаете это с помощью более высокого уровня слоя.Это может быть любое количество вещей.

Но, в конце концов, решать вам.С большой силой приходит большая ответственность.

...