Ускорение рендеринга графики поверх OpenGL с использованием GLScene и Graphics32Delphi , Графика и Игры , OpenGLПри работе с рендерингом графики поверх OpenGL часто возникает проблема с потерями FPS. В данной статье мы рассмотрим, как ускорить рендеринг графики поверх OpenGL с использованием GLScene и Graphics32, не теряя производительность. Проблема: При попытке наложить графику на рендеринг сцены OpenGL с помощью GLScene и Graphics32 наблюдается существенное снижение FPS. Мы уже реализовали рендеринг сцены OpenGL в битмап, применили его к TImageView32 и добавили финальные UI-элементы в TImage32. Однако, при использовании следующего кода для рендеринга в битмап наблюдается значительное снижение FPS:
При этом, другой код, который обеспечивает реальное время рендеринга, не позволяет изменить свойство "Bitmap" у ImageViewer32. В результате, рендеринг сцены OpenGL происходит, но собственная графика не отображается. Решение: Для ускорения рендеринга графики поверх OpenGL без потери FPS можно использовать подход, избегающий копирования с GPU на CPU и обратно. Для этого нужно загрузить оверлей в текстуру OpenGL и нарисовать его поверх всей сцены с помощью большого текстурного квада. OpenGL - это не сценография, а более сложный API для рисования. Вы можете изменять параметры viewport и преобразований в любое время без изменения пикселей, уже нарисованных ранее. Таким образом, можно легко переключиться в систему координат, ориентированную на экранное пространство, и нарисовать оверлей с помощью этого. Пример кода на Object Pascal (Delphi) для наложения графики поверх рендеринга OpenGL:
Примечание: Не забудьте освободить текстуру после использования:
Используйте данную процедуру для рисования оверлея поверх сцены OpenGL после рендеринга сцены, но перед отображением кадра на экране. ' Ускорение рендеринга графики поверх OpenGL с использованием GLScene и Graphics32.' Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |