LINUX.ORG.RU

[c++] [qt?] [opengl?] [qwt?] [mathgl?] Адский рендер.

 


0

1

Есть поле прямоугольников, все имеют разные размеры. Это _не_ сетка, а более сложная сущность. Само поле не обязательно прямоугольное. Например, всё может выглядеть так: http://rghost.ru/1142360.view (на цвета не обращайте внимания, они тут для красоты :)).

У каждого прямоугольника есть температура. Она меняется во времени (размеры же остаются неизменными). Требуется визуализация этого поля. Примерно вот так: http://mathgl.sourceforge.net/png/dens.png.

Ячеек может быть вплоть до 15000 (в среднем 5000), отрисовка требуется в идеале раз в секунду.

Какие инструменты использовать?

P.S.: я описал общий случай. Из-за ограничений редактора (или, скорее, упрощений во благо пользователя), по сути работать приходится с прямоугольными наборами прямоугольников. Например, вот поле из трёх наборов — http://rghost.ru/1142542.view : в первом наборе прямоугольники 4x4, во втором 2x3, в третьем (перекрывает первое поле) 1x1. Так что и рендер, наверное, буду затачивать под этот частный случай.

★★★★★

Последнее исправление: Obey-Kun (всего исправлений: 3)

>У каждого прямоугольника есть температура.

температура постоянно для всех точек прямоугольника? Если да, то QPainter в руки и вперед.

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

> температура постоянно для всех точек прямоугольника? Если да, то QPainter в руки и вперед.

Да. Такая визуализация и так будет (тем более, делать её очень просто), но она не будет основной, так как основная визуализация требуется с плавными переходами. Также, что-то мне подсказывает, что оно будет медленнее и для риалтайма не подходит. Такую дискретную (поячеечную) штуку можно будет засунуть в буфер и забыть, чтобы пользователь уже в статике мог смотреть параметры каждой ячейки. Я уже показывал хороший пример с плавными переходами: http://mathgl.sourceforge.net/png/dens.png. На этой картинке всё отрисовано из дискретного поля (50x40 квадратных ячеек), но тем не менее вы видите не ячейки, а читаемый график. Вот то же поле, визуализированное другим методом: http://mathgl.sourceforge.net/png/surf.png. Представьте, какая лестница была бы, если бы не сглаживались переходы между ячейками.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от nu11

> температура постоянно для всех точек прямоугольника? Если да, то QPainter в руки и вперед.

То есть по сути при визуализации решается такая задача. Поле прямоугольников переделывается в поле точек (центры прямоугольников) температуры точек соответствуют температурам «родительских» прямоугольников. Далее, собственно, происходит визуализация.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от nu11

> не думаю. http://qt.nokia.com/doc/4.6/demos-chip.html у меня даже на голом фреймбуфере не тормозит

Если бы чипы в примере мигали разными цветами, то это было бы то, что нужно. А тут, если я не ошибаюсь, они пихают чипы в буфер и всё. У меня такое использовано, например, для отрисовки масштабной сетки. Поправьте, если не прав.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

> Поле прямоугольников переделывается в поле точек (центры прямоугольников) температуры точек соответствуют температурам «родительских» прямоугольников. Далее, собственно, происходит визуализация.

То есть (упрощённо) нужно визуализировать поле точек, точки располагаются как угодно, переходы температур между точками плавные.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

Хотелось бы увидеть альтернативы, чтобы был выбор.

http://www.mathtools.net/C_C__/Graphics_and_Visualization/index.html
http://www.visualizationlibrary.com/jetcms/

погодите, оно же 3D, а мне нужно 2D.

из 3D сделать 2D куда проще, чем наоборот; нужный тебе функционал там есть

jtootf ★★★★★
()

30 тысяч полигонов можно рисовать раз эдак 400 в секунду :) Бери голый OpenGL, и не вспоминай о производительности.

wyldrodney
()
Ответ на: комментарий от Obey-Kun

чипы разноцветные, из них картинка составлена. Плюс выделяются мышкой.

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

плюсую.
OpenGL Display Lists и не надо ничего мудрить.

k0l0b0k ★★
()
Ответ на: комментарий от Obey-Kun

http://pmg.org.ru/nehe/index.html

тебе там всего пару уроков прочитать (как проинициализировать, как выставить ортогональную проекцию, как рисовать и закрашивать примитивы, как пользоваться Display List'ами). А c QGLWidget и того меньше.

А еще лучше - осилить QGraphicsView, он поможет избавиться от гемора на тех машинках, к которым OpenGL «неприменим» (очень часто сталкиваюсь с этой проблемой на говновиндовсах с говноАТИ)

k0l0b0k ★★
()

Блин, я перепутал отрисовку средствами Scene--View и просто отрисовку пэинтером. Первое действительно довольно медленное, а второе чертовски шустрое. Пока сделаю так.

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