Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] [2D Графика] Использовать OpenGL или рисовать на форме? (http://forum.oszone.net/showthread.php?t=216938)

PhilB 01-10-2011 23:07 1763949

[2D Графика] Использовать OpenGL или рисовать на форме?
 
Добрый день!

Встала проблема работать в программе с векторной графикой. Причем у пользователя должна быть возможность взаимодействия с графикой. Причем по большей части именно взаимодейстовать (масштабирование, сдвиги), изменения будет вноситься через дополнительные диалоговые окна. Основная загвоздка состоит в том, что в программе может накладываться около 20 слоев этой самой графики (а то и больше). Уж очень боюсь, что будут проблемы с производительностью... Сия программа пишется на С++/Qt.
В каких случаях для 2D графики уместно ипользовать OpenGL, а в каких можно обойтись простым рисование на форме? Даст ли OpenGL прирост производительности (например, за счет аппаратного видеоускорения)? Как вообще спинуть максимум нагрузки на видеокарту?

Очень надеюсь на ваши советы. Заранее благодарен.

PhilB 12-10-2011 19:35 1771975

Неужто совсем никаких идей? Может я чего упустил... Подскажите, может чего добавить надо про прояснения сути?

ferget 12-10-2011 20:01 1771994

сходите на gamedev, там подобные вопросы часто обсуждаются

lxa85 12-10-2011 20:22 1772004

PhilB, абстрактно рассуждать довольно сложно. Да, скорее всего рациональным будет использование готовых графических движков, вместо работы с формой. Т.е. тут надо смотреть, кто или что, как отрисовывает графику (Qt, Cairo, OpenGL), и нагрузить его тестовой программой.
Я думаю вполне возможно смоделировать одновременные действия над объектами, посмотрев, насколько тяжко придется приложению.
Какое содержимое будет в "слое", насколько это сложный объект?

PhilB 12-10-2011 20:45 1772021

Вообще, это по сути будет геоинформационная система. Требования заказчка за неделю неплохо прояснились:)
Те самые слои - это
1. Сама карта - на отдельных слоях: реки, дороги, поля и.т.п.
2. То что пользователь наносит сверху - подписи всякие, раскраска карты по различным показателям и.т.п
Слои описываются как элементы векторной графики: отдельными точками, областями, дугами, ломаными и.т.п.
OpenGL использовать не хочу.
1. Ибо динамики там минимум. Только масштабирование/сдвиги. Изменение же картинки будет осуществляться через дополнительные диалоговые окна. (например: разрезать поле, поставить флажок с подписью).
2. Программировать ее сложнее.
3. Как обрабатывать взаимодействие с пользователем в OpenGL не помню. (например: выделить несколько объектов, разрезать их по линии). Но точно сложнее, чем в случае с формой.

Вообще на самом деле вопрос двоякий. Я хочу и решить чисто практический вопрос и разобраться с теорией.:)

Delirium 13-10-2011 01:02 1772163

PhilB, я могу тебе через PM дать ICQ одного из разработчиков одной геоинформационной системы Zulu(российская разработка), можешь кратенько у него спросить. А вообще аська есть на их сайте, там же и форум есть - http://www.politerm.com.ru/forums/index.php
Мне кажется, они из первых рук лучше подскажут, как надо сделать.

PhilB 14-10-2011 18:40 1773407

Delirium, Благодарю. Аську пока не надо. Меня тут намедни пообещали познакомить с товарищем, который "не одну собаку на этом съел".
Посему пока поспрашиваю тех, кто поближе.:)
И пользоваться советом lxa85. Начну с простого рисования...
Если производительности не хватит, буду пробовать OpenGL.

От дальнейших советов не откажусь:)

PhilB 27-01-2012 22:14 1845915

Все никак руки не доходили отписаться о результатах. Вдруг кому интересно. :)
В Qt обнаружился мощный полноценный графический движок Graphics View Framework, который предоставляет очень немалые возможности для работы с двухмерной графикой, его возможностей оказалось в целом достаточно. (Хотя и для хранения пространственных данных приходиться использовать свои структуры.)
Производительности вроде пока хватает, данный фреймворк использует аппаратное видеоускорение, если это возможно. (В частности нужны фирменные драйвера на видеокарту, при их отсутствии аппаратное ускорение вероятнее всего окажется недоступным). То есть производительности в целом хватает. (Хотя без драйверов притормаживает ощутимо).
Считаю тему решенной. Спасибо откликнувшимся :)

lxa85 27-01-2012 23:19 1845960

PhilB, спасибо за отзыв. :)


Время: 08:30.

Время: 08:30.
© OSzone.net 2001-