LINUX.ORG.RU

OpenGL, 2D


0

1

Рисует ли OpenGL 2D графику (в основном интересует отрисовка полигонов, пересчёт координат вершин) быстрее, чем абстрактная GUI библиотека на канве, если последняя задействует ускорение для вывода 2D графики? Ну, скажем, те же Qt, Cairo (без использования OpenGL), для примера. Говоря про библиотеки, подразумеваю, что оптимизация выкидывающая из отрисовки не попадающее в окно просмотра - сделана.

★★

Да. Тут вон крайзисы видеокарта рисует, не то что какое-то 2д

note173 ★★★★★ ()
Ответ на: комментарий от note173

Qt может использовать просчеты на видеокарте, но таки профита в скорости отрисовки не увидел, скорее даже наоборот, традиционные виджеты рисуются через openGL медленнее. Вот Qtшная GraphicScene таки сильно выигрывает от openGLя

Gorthauer ★★★★★ ()
Ответ на: комментарий от Gorthauer

Если бы они изначально писались для рисования только через OpenGL - выигрыш бы был.
Сейчас там наверняка все рисуется в текстуру и просто выводится через OpenGL.

note173 ★★★★★ ()

cairo, насколько мне известно, использует xrender.

также, насколько мне известно, это 2д ускорение работает быстрее чем отрисовка через opengl, за счет того что оно не проходит через весь 3д конвейер.

лично бенчмарки xrender vs opengl не делал, но вижу много причин по которым xrender должен быть быстрее. если найдешь бенчмарки (или сам сделаешь) - было бы интересно взглянуть на результаты.

waker ★★★★★ ()

Тоже такое хочу. Чего-то сопоставимого с микрософтовым Директом 2Д или яблочным Кварцем не нашел. Были мысли велосипедостройкой заняться, времени нет.

Для пресчета простых шейдеров может и недостаточно будет, но сейчас не проблема, поскольку ОпенЦЛ вроде как стандарт.

ebantrop ()
Ответ на: комментарий от anonymous

Переизобретать его - будет тормозить скорее всего.

OpenVG уже давно юзается на телефонах, как и GL|ES, просто производители десктопных железок не делают OpenVG драйверы.

Сейчас, драйверы основанные на G3D уже имеют кое какую поддержку OpenVG, покрайней мере я собирал примеры из SDK от имаджинейшн технолоджис.

Qt имеет возможность рисовать окна через OpenVG уже прям щяс.

О технологии просто мало известно в общих кругах, и по возможностям она уделывает D2D.

Lindows ()
Ответ на: комментарий от Lindows

>Qt имеет возможность рисовать окна через OpenVG уже прям щяс.

Qt, вроде бы, по-старинке рисует в текстуру, и сует ее видеокарте. Т.е. плюсов от такого - нуль.

О технологии просто мало известно в общих кругах, и по возможностям она уделывает D2D.


Ну и например?

anonymous ()
Ответ на: комментарий от anonymous

Кстати, в DirectX - не единым Direct2D.
Есть еще тот же DirectWrite, ну и т.п.

«Уделывает по возможностям» - если это так же, как OpenGL «уделывает» Direct3D(куча расширений от конкретных производителей, в итоге все выливается в кучу ifdef и фактическую неюзабельнность), то это неверное заявляение.

anonymous ()
Ответ на: комментарий от Lindows

> О технологии просто мало известно в общих кругах, и по возможностям она уделывает D2D.

Известно, читал. Где взять?

... просто производители десктопных железок не делают OpenVG драйверы

Такие дела.

ebantrop ()

Не слушайте товарищей с треде. ВСЕ 3D ускорение на видеокарте в Linux делается через OpenGL или просто НЕ делается. Чистого аппаратно-ускоренного 2D не существует, так как 2D - частный случай от 3D и профита в скорости от того что это 2D нет. Просто не используется одна из координат. Чаще всего Z, потому что в OpenGL есть функции для 2 параметров X и Y, которые принимают Z за 0.

vertexua ★★★★☆ ()
Ответ на: комментарий от anonymous

Qt, вроде бы, по-старинке рисует в текстуру

-graphicssystem openvg с версии 4.5 есть

Kosyak ★★★★ ()
Ответ на: комментарий от vertexua

Почитай про OpenVG. Только, как тут уже сказали, дрова есть на мобилках и gallium'e

Kosyak ★★★★ ()
Ответ на: комментарий от vertexua

> Если аппаратно ускорен, то работает, если нет, то нет

а ты не знаешь линков на какую-то документацию по этому поводу? что-то я не могу нигде найти никаких предпосылок, что там opengl под капотом.

waker ★★★★★ ()
Ответ на: комментарий от vertexua

там написано, что opengl _может_ быть использован на каких-то гипотетических системах. это как бы понятно. я спрашиваю — как оно в реале реализовано

вот, нарыл в исходниках:

http://www.google.com/codesearch/p?hl=en#oU4w4hufuM4/trunk/xorg/xorg-server-1...

никакого opengl не видно.

http://en.wikipedia.org/wiki/EXA

ведет нас на страницу: http://xorg.freedesktop.org/wiki/ExaStatus

и что-то я не наблюдаю там opengl

waker ★★★★★ ()
Ответ на: комментарий от waker

зы: нахрена вообще тогда нужен xrender, если можно просто opengl юзать? если xrender через opengl работает - это дикость какая-то, и бессмыслица.

waker ★★★★★ ()
Ответ на: комментарий от vertexua

там не очень ясно написано. но это никак нельзя интерпретировать как «все реализации XRender» должны работать через opengl.

зато есть много причин считать, что nvidia blob использует какие-то внутренние 2д-заморочки для xrender, а не opengl вовсе.

waker ★★★★★ ()
Ответ на: комментарий от waker

Ну этого не знаю, может быть. Хотя это не логично, OpenGL полностью покрывает все потребности в 3D ускорении и является must have практически на любом мультимедийном девайсе, хотя бы в версии OpenGL ES

vertexua ★★★★☆ ()
Ответ на: комментарий от waker

Ускорение чегов в 2D? отрисовки линий(кривых)? / полигонов или текстур?

http://cgit.freedesktop.org/nouveau/xf86-video-nouveau/tree/src/nouveau_exa.c

в какой конкретной строке тут ускорение (соответственно чего)?

Примерчик от себя: в OpenGL, в glu есть набор функций для тесселяции _полигонов_. В комбинации со списком вызовов (glCallist) это дает огромный прирост производительности отрисовки для статичных сцен, с большим количеством полигонов.

nikitos ★★ ()
Ответ на: комментарий от nikitos

> Ускорение чегов в 2D? отрисовки линий(кривых)? / полигонов или текстур?

xrender ускоряет отрисовку треугольников и трапезоидов, шрифтов, а так же alpha-blending.

в какой конкретной строке тут ускорение (соответственно чего)?

конкретно этот исходник, скорее всего, общий код для всех поддерживаемых видеокарт - создание и копирование pixmaps. посмотри там же другие файлы. imho, вполне понятно что и как ускоряется.

в glu есть набор функций для тесселяции _полигонов_

glu не ускоряется аппаратно. все на CPU сделано.

В комбинации со списком вызовов (glCallist) это дает огромный прирост производительности отрисовки для статичных сцен, с большим количеством полигонов.

относительно VBO — это дает замедление отрисовки :)

waker ★★★★★ ()
Ответ на: комментарий от waker

Вы путаете тёплое с мягким. Списки вызовов и VBO это разные вещи (хотя можно комбинировать, да). О замедлении говорят в контексте конкретной реализации OpenGL.

nikitos ★★ ()
Ответ на: комментарий от nikitos

> Вы путаете тёплое с мягким.

да, я в курсе, что они разные, и что в display lists можно запихивать не только геометрию, и что в ряде случаев они могут что-то ускорить.

но в данном треде я лишь хотел спросить у знающих людей, как реализован xrender extension в разных драйверах. кто-то сказал, что через opengl, я попытался выяснить где оно реализовано через opengl. ответа пока не получил.

все это из чистого любопытства. обсуждать opengl у меня нет никакого интереса.

waker ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.