Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Alex_C от Март 26, 2012, 16:56



Название: [Решено] BitBlt - а как на Qt?
Отправлено: Alex_C от Март 26, 2012, 16:56
Для быстрого вывода графики в своей программе использую ф-цию WinAPI BitBlt. Правильно ли я понимаю, что в Qt вместо нее, если хочу получить кросс-платформенное приложение, нужно использовать QPainter? Как у него со скоростью вывода?


Название: Re: BitBlt - а как на Qt?
Отправлено: GreatSnake от Март 26, 2012, 17:05
В QPainter включен double-buffering, что естественно сказывается на производительности.


Название: Re: BitBlt - а как на Qt?
Отправлено: Igors от Март 26, 2012, 21:11
Для быстрого вывода графики в своей программе использую ф-цию WinAPI BitBlt. Правильно ли я понимаю, что в Qt вместо нее, если хочу получить кросс-платформенное приложение, нужно использовать QPainter? Как у него со скоростью вывода?
Хреново, особенно с текстом


Название: Re: BitBlt - а как на Qt?
Отправлено: GreatSnake от Март 27, 2012, 07:42
Для быстрого вывода графики в своей программе использую ф-цию WinAPI BitBlt. Правильно ли я понимаю, что в Qt вместо нее, если хочу получить кросс-платформенное приложение, нужно использовать QPainter? Как у него со скоростью вывода?
Хреново, особенно с текстом
А причём здесь вывод текста и bitblt()?


Название: Re: BitBlt - а как на Qt?
Отправлено: Alex_C от Март 27, 2012, 08:24
А причём здесь вывод текста и bitblt()?

Потому как для быстрого вывода текста без мелькания сначала его TextOut на Bitmap в памяти, а затем BitBlt на нужный канвас.... Плохо это, что хреново. Хотя с другой стороны double-buffering и подразумевает сначала отрисовку в памяти, а затем уже и вывод картинки на экран.


Название: Re: BitBlt - а как на Qt?
Отправлено: LisandreL от Март 27, 2012, 09:09
сначала его TextOut на Bitmap в памяти, а затем BitBlt на нужный канвас...
Ну так никто не запрещает рисовать в QPixmap, а потом выводить drawPixmap.
Mandelbrot Example посмотрите.


Название: Re: BitBlt - а как на Qt?
Отправлено: Alex_C от Март 27, 2012, 10:24
Ну так никто не запрещает рисовать в QPixmap, а потом выводить drawPixmap.
Mandelbrot Example посмотрите.

Отличный пример! Вопрос снят! Большое спасибо!


Название: Re: [Решено] BitBlt - а как на Qt?
Отправлено: Igors от Март 27, 2012, 10:27
Интересно сравнить скорость (Qt) вывода "просто на экран" и "через QPixmap"


Название: Re: [Решено] BitBlt - а как на Qt?
Отправлено: GreatSnake от Март 27, 2012, 11:22
Интересно сравнить скорость (Qt) вывода "просто на экран" и "через QPixmap"
А не так-то просто это сделать, т.к. double-buffering можно отключить только на X11 (см. Qt::WA_PaintOnScreen).
2 Alex_C:
Qt всё уже за тебя сделала)


Название: Re: [Решено] BitBlt - а как на Qt?
Отправлено: Igors от Март 27, 2012, 11:34
А не так-то просто это сделать, т.к. double-buffering можно отключить только на X11 (см. Qt::WA_PaintOnScreen).
Иногда надо "тупенько"  :) Просто замеряем с/без QPixmap, с точки зрения пользователя, не вдаваясь ни в какие нюансы. На моей платформе (OSX) через QPixmap намного медленнее (не знаю почему)