Может ли использование OpenGL для моих QGraphicsItems ускорить отображение в моем QGraphicsView? - PullRequest
1 голос
/ 15 июня 2011

Я использую QGraphicsView с сотнями больших QGraphicsItems в них.QGraphicsItems по сути являются QGraphicsPixmapItems, потому что я читаю некоторые необработанные данные из файла и преобразовываю их в QImage, а затем использую рисователь drawImage ().

Проблема в том, что после того, как я начал получать определенное количествоэти элементы в моей сцене, ИЛИ только один, очень большой, сцена начинает очень медленно реагировать.Если я перемещаю элементы или пытаюсь увеличить / уменьшить их и т. Д., Сцена обновляется вечно.Мне бы хотелось, чтобы он был более интерактивным, вместо того, чтобы постоянно ждать на сцене обновления после загрузки всех данных.

Может ли OpenGL помочь мне здесь?Как бы я поступил так?Создание 2D-прямоугольника и рисование текстуры моих необработанных данных на нем?У меня есть все мои QGraphicsItems в QGraphicsItemGroup, по существу они составляют одно большое изображение.Если я уменьшу масштаб достаточно далеко, чтобы увидеть все мои сотни QGraphicsItems, то большое «изображение» плиток будет по крайней мере 32000x32000 пикселей.Может ли OpenGL справиться с этим, если бы я отображал их как текстуры на прямоугольниках?

1 Ответ

0 голосов
/ 15 июня 2011

Квадрат текстуры 32000 - 1Гпиксель. С цветом RGBA это 4 ГБ видеопамяти.

Вы сказали, что ваши размеры даже больше, так что у вас достаточно видео RAM? Не забудьте включить место для уровней mipmap.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...