Рендеринг в обратный буфер GLX с вызовами X? - PullRequest
1 голос
/ 13 января 2012

Я играю с GLX и xlib, и мне любопытно посмотреть рендеринг с использованием прямых вызовов X поверх буфера openGL.В glx intro четко сказано, что:

Расширенные X-серверы GLX делают подмножество своих визуальных элементов доступными для рендеринга OpenGL.Рисованные объекты, созданные с помощью этих визуальных элементов, можно также визуализировать с использованием основного средства визуализации X и / или любого другого расширения X, совместимого со всеми основными визуальными элементами X.

И, действительно, я могу визуализироватьпростой четырехугольник, окрашенный некоторыми эффектами радуги, а затем рисующий поверх него вызовами xlib. Однако , GLX расширяет окно X с помощью заднего буфера, который я должен поменять на передний план, прежде чем я смогу затем напрямую отобразить окно.Мой вопрос: возможно ли использовать X для рендеринга в буфер back после того, как openGL будет с ним работать, а затем поменять этот буфер оптом на передний план, что даст мне возможность без мерцания анимации как на openGL, так и на Xграфика?

1 Ответ

1 голос
/ 24 января 2012

Я думаю, что ответ отрицательный, но, возможно, есть несколько альтернатив.

Вы можете сделать еще один слой двойной буферизации с растровым изображением (визуализировать X и GL в растровое изображение, затем нарисовать растровое изображение вОкно X).Вероятно, он разрушает вашу частоту кадров, если вы играете в FPS, но то, что вы описываете, может не иметь значения.

Вы также можете использовать Cairo для рисования в буфер памяти на стороне клиента, с альфа-каналом для отображения фоначерез.Затем загрузите результат в виде текстуры в GL и закрасьте его на фоне.Набор инструментов Clutter делает это для некоторых своих чертежей.

...