2016-08-12 2 views
4

Можно ли нарисовать текстуру (если она имеет правильную ширину, высоту и формат пикселей) непосредственно в буфер кадра без использования вершин и шейдеров в Вулкане?Vulkan - рисовать текстуру напрямую без вершин и шейдеров

+0

To downvoters: Я предполагаю, что он ищет что-то близкое к glDrawPixels()/glDrawBuffer() OpenGL() в API Vulkan, которое позволяет напрямую рисовать фреймбуферу. При рисовании полноэкранного текстурированного квадроцикла без перспективных проекций и без записи ZBuffer это прямое решение, это все еще правильный вопрос. –

+4

@NicolBolas Извините, но вы очень жесткие. Вулькан ужасно новый и имел гигантский документ и огромную структуру, на которую можно было смотреть. Это никоим образом не является тривиальным. И я предполагаю, что предложение StackOverflow - это построить мосты между тем, кто знает и кто не знает. –

+0

Я согласен с Алексом здесь - есть много документации для просмотра, и если вы еще не использовали Vulkan, и читаете документацию, чтобы решить, хотите ли вы ее использовать, тогда вы, вероятно, не поймете, что 'vkCmdCopy *' команды - это то, что вы хотите. Большинство небольших образцов показывают, как рисовать с помощью индексов и вершин, а не прямых копий текстур. Я задал вопросы, которые содержали разделы документации, которые могли бы ответить на них, но я их не нашел. –

ответ

6

Вы можете сделать vkCmdCopyImage скопировать из vkImage к swapchain-х vkImage при условии, что vkSurface поддерживает будучи TRANSFER_DST как на supportedUsageFlags поля из результата vkGetPhysicalDeviceSurfaceCapabilitiesKHR.

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

+0

Вы также можете использовать 'vkCmdBlitImage', если хотите масштабировать, фильтровать или преобразовывать формат. 'vkCmdCopyImage' прямо вверх берет копию памяти, что не всегда полезно. – Quinchilion

+0

Но обратите внимание, что для этого требуется, чтобы исходный формат поддерживал 'VK_FORMAT_FEATURE_BLIT_SRC_BIT' и формат назначения для поддержки' VK_FORMAT_FEATURE_BLIT_DST_BIT'. Это может быть не всегда так, поэтому, если вы собираетесь использовать blit, сначала проверьте их. –

Смежные вопросы