Считываем результат визуализации OpenGL в память

  !   Данная информация предназначена только только для IT-специалистов по системной интеграции модулей БИОСОФТ-М. (см. Руководства пользователя к программным продуктам)

Для интеграции OpenGL с нашими приложениями нужно считать результат визуализации OpenGL в память.

Невидимое окно

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

glReadPixel vs PBO

Базовым средством считывания результата визуализации OpenGL в память является glReadPixel. Но все разработчики 3D приложений знают, что он очень медленный ,и рекомендуют использовать Pixel Buffer Object (PBO). И действительно на некоторых тестах разница в производительности оказывается в 500 раз: 15 ms против 0.03 на кадр. Но в наших условиях эта разница абсолютно не играет никакой роли.

Результат

на базе предыдущих задач разработан очередной тест, реализующий:

  • интеграцию результата визуализации OpenGLв наш UI:
    • визуализация в невидимом окне
    • считывание результатов визуализации
      • через glReadPixel
      • через PBO
    • отрисовку в нашем UI
  • тестирование производительности (FPS)

Тестирование на различных не слишком новых машинах показывает, что при использовании данной техники FPS не опускается ниже 100.