Можно ли нарисовать текстуру (если она имеет правильную ширину, высоту и формат пикселей) непосредственно в буфер кадра без использования вершин и шейдеров в Вулкане?Vulkan - рисовать текстуру напрямую без вершин и шейдеров
ответ
Вы можете сделать vkCmdCopyImage
скопировать из vkImage
к swapchain-х vkImage
при условии, что vkSurface
поддерживает будучи TRANSFER_DST
как на supportedUsageFlags
поля из результата vkGetPhysicalDeviceSurfaceCapabilitiesKHR
.
В противном случае вам необходимо сделать полноэкранный рендеринг и захватить данные о цвете с входного изображения в качестве отбираемой текстуры или ввода.
Вы также можете использовать 'vkCmdBlitImage', если хотите масштабировать, фильтровать или преобразовывать формат. 'vkCmdCopyImage' прямо вверх берет копию памяти, что не всегда полезно. – Quinchilion
Но обратите внимание, что для этого требуется, чтобы исходный формат поддерживал 'VK_FORMAT_FEATURE_BLIT_SRC_BIT' и формат назначения для поддержки' VK_FORMAT_FEATURE_BLIT_DST_BIT'. Это может быть не всегда так, поэтому, если вы собираетесь использовать blit, сначала проверьте их. –
- 1. Рисовать больше изображения, используя текстуру (Android)
- 2. OpenGLES 2 без шейдеров
- 3. XNA: Как написать текстуру с использованием шейдеров
- 4. Получить текстуру WebGL/буфер/число шейдеров
- 5. VBO цвета вершин с использованием шейдеров
- 6. glDrawElements без использования шейдеров?
- 7. vulkan: как использовать один буфер вершин с различными смещениями?
- 8. Как добавить несколько шейдеров вершин в ShaderMaterial?
- 9. рисовать текстуру с формой многоугольника
- 10. Как узнать атрибуты вершин для шейдеров?
- 11. рисовать текстуру на треугольной сетке
- 12. Упаковка данных вершин в текстуру WebGL
- 13. Как визуализировать оттенки серого без использования фрагментарных шейдеров? (OpenGL)
- 14. Рисовать полностью белую текстуру в OpenGL
- 15. Vulkan: объект модуля Invalid Shader
- 16. Как Vulkan Driver и Vulkan SDK взаимодействуют?
- 17. Как не переписывать цвета вершин с помощью шейдеров в OpenGL?
- 18. Как обновить данные вершин VBO напрямую?
- 19. Резервный буфер вершин, заставляющий OpenGL правильно рисовать
- 20. Изменение цвета при рендеринге OpenGL без освещения или шейдеров
- 21. Как применить текстуру к ортографической плоскости с помощью шейдеров DirectX11
- 22. Масштабировать и рисовать текстуру, чтобы коснуться координат с помощью libgdx
- 23. Преобразование цветов вершин в УФ-текстуру в meshlab
- 24. OpenGL Instanced Rendering без шейдеров
- 25. Как размыть SDL_Surface без шейдеров?
- 26. XNA 4.0 - Загрузить текстуру без фона
- 27. Имеет ли Vulkan эквивалент TransformFeedback
- 28. Как загрузить и привязать текстуру к классам OpenGL Qt?
- 29. Загрузка текстур без силы двух в Vulkan
- 30. Каков правильный способ рисовать мои 3D-объекты с помощью шейдеров?
To downvoters: Я предполагаю, что он ищет что-то близкое к glDrawPixels()/glDrawBuffer() OpenGL() в API Vulkan, которое позволяет напрямую рисовать фреймбуферу. При рисовании полноэкранного текстурированного квадроцикла без перспективных проекций и без записи ZBuffer это прямое решение, это все еще правильный вопрос. –
@NicolBolas Извините, но вы очень жесткие. Вулькан ужасно новый и имел гигантский документ и огромную структуру, на которую можно было смотреть. Это никоим образом не является тривиальным. И я предполагаю, что предложение StackOverflow - это построить мосты между тем, кто знает и кто не знает. –
Я согласен с Алексом здесь - есть много документации для просмотра, и если вы еще не использовали Vulkan, и читаете документацию, чтобы решить, хотите ли вы ее использовать, тогда вы, вероятно, не поймете, что 'vkCmdCopy *' команды - это то, что вы хотите. Большинство небольших образцов показывают, как рисовать с помощью индексов и вершин, а не прямых копий текстур. Я задал вопросы, которые содержали разделы документации, которые могли бы ответить на них, но я их не нашел. –