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