LINUX.ORG.RU

QT4: попиксельное отображение


0

0

Необходимо попиксельно отображать информацию через некоторый интервал времени. Точек довольно много (~ десятки тысяч) и разными цветами. Сейчас рисую сначала QPainter'ом на QImage drawPoint а потом отображаю drawImage. Как можно увеличить скорость отображения ?


Ответ на: комментарий от pacify

> OpenGL

3D нет, а для 2D OpenGL ...? Надо ли ?

drZlo
() автор топика

P.S. Нужно средствами именно QT4.

drZlo
() автор топика

Мне думается, что надо получить указатель на область данных изображения (только, вроде, не QImage, а QPixmap), и писать непосредственно в эту область памяти такие значения пикселей, которые нужны. А потом рисовать уже это изображение.

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

> Мне думается, что надо получить указатель на область данных изображения

Ты имееш ввиду это: ?
QImage *imag;
painter.begin(imag);

> только, вроде, не QImage, а QPixmap


У QImage доступ к отдельным пикселям быстрее.

> А потом рисовать уже это изображение.


Так вроде так и делаю:

painter.begin(imag);
painter.drawPoint(x,y);
painter.end();

painter.begin(this);
painter.drawImage(rec, *imag);
painter.end();


drZlo
() автор топика

uchar * QImage::bits ()

Returns a pointer to the first pixel data. This is equivalent to scanLine(0).

int QImage::bytesPerLine () const

Returns the number of bytes per image scanline.

uchar * QImage::scanLine ( int i )

Returns a pointer to the pixel data at the scanline with index i. The first scanline is at index 0.

Т.е. рисуй напрямую в память QImage.

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

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

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