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