Я использую cairo (http://cairographics.org) в сочетании с 3D-графической библиотекой на базе OpenGL.
В настоящее время я использую 3D-библиотеку в Windows, но я надеюсь получить ответ, независимый от платформы.
Это все сделано в С++.
У меня есть прямой подход к работе, который должен использовать cairo_image_surface_create в сочетании с glTexImage2D, чтобы получить текстуру OpenGL.
Однако из того, что я смог собрать из документации cairo_image_surface_create, используется рендерер на основе ЦП и записывает вывод в основную память.
Я понял, что у cairo есть новый рендеринг, основанный на OpenGL, который выводит свой результат непосредственно на графический процессор, но я не могу найти конкретные детали о том, как его использовать.
(Я нашел некоторые сведения о glitz-рендерере, но он, кажется, устарел и удален).
Я проверил список поверхностей по адресу http://www.cairographics.org/manual/cairo-surfaces.html, но я чувствую, что мне не хватает очевидного.
Мой вопрос: Как создать поверхность каира, которая напрямую обращается к текстуре OpenGL?
Заметьте: мне нужно будет использовать текстуру напрямую (без копирования), чтобы отображать выход каира на экране.