1. Есть QGraphicsView. В качестве вьюпорта установлен QGLWidget.2. Есть наследник от QGraphicsItem c переопределенным методом paint. В связи с багом в Qt реализовал свое кеширование айтема. Примерный код:Код:void paint( QPainter* painter, const QStyleOptionGraphicsItem*, QWidget* = 0 ){ const QRectF& rect = painter->worldTransform().inverted().mapRect( QRectF( painter->viewport() ) ); if ( changed( rect ) ) { //Если текущая область изменилась, то перерисовываем кеш _cache - внутреннее поле класс, QPixmap _cache. _cache = QPixmap( painter->viewport().size() ); _cache.fill( QColor( 0, 0, 0, 0 ) ); //Рисовка в кеш. } //Отображение кеша: painter->setWorldMatrixEnabled( false ); painter->drawPixmap( 0, 0, _cache ); painter->setWorldMatrixEnabled( true );}Так вот под Windows XP для некоторых моделей NVIDIA-карт медленно работает painter->drawPixmap( 0, 0, _cache ); Проявил следующим образом: открыл notepad и поводил по окну - перерисовка тормозит. Как можно данный косяк оптимизировать? Заранее спасибо!
|