![]() |
[2D Графика] Использовать OpenGL или рисовать на форме?
Добрый день!
Встала проблема работать в программе с векторной графикой. Причем у пользователя должна быть возможность взаимодействия с графикой. Причем по большей части именно взаимодейстовать (масштабирование, сдвиги), изменения будет вноситься через дополнительные диалоговые окна. Основная загвоздка состоит в том, что в программе может накладываться около 20 слоев этой самой графики (а то и больше). Уж очень боюсь, что будут проблемы с производительностью... Сия программа пишется на С++/Qt. В каких случаях для 2D графики уместно ипользовать OpenGL, а в каких можно обойтись простым рисование на форме? Даст ли OpenGL прирост производительности (например, за счет аппаратного видеоускорения)? Как вообще спинуть максимум нагрузки на видеокарту? Очень надеюсь на ваши советы. Заранее благодарен. |
Неужто совсем никаких идей? Может я чего упустил... Подскажите, может чего добавить надо про прояснения сути?
|
сходите на gamedev, там подобные вопросы часто обсуждаются
|
PhilB, абстрактно рассуждать довольно сложно. Да, скорее всего рациональным будет использование готовых графических движков, вместо работы с формой. Т.е. тут надо смотреть, кто или что, как отрисовывает графику (Qt, Cairo, OpenGL), и нагрузить его тестовой программой.
Я думаю вполне возможно смоделировать одновременные действия над объектами, посмотрев, насколько тяжко придется приложению. Какое содержимое будет в "слое", насколько это сложный объект? |
Вообще, это по сути будет геоинформационная система. Требования заказчка за неделю неплохо прояснились:)
Те самые слои - это 1. Сама карта - на отдельных слоях: реки, дороги, поля и.т.п. 2. То что пользователь наносит сверху - подписи всякие, раскраска карты по различным показателям и.т.п Слои описываются как элементы векторной графики: отдельными точками, областями, дугами, ломаными и.т.п. OpenGL использовать не хочу. 1. Ибо динамики там минимум. Только масштабирование/сдвиги. Изменение же картинки будет осуществляться через дополнительные диалоговые окна. (например: разрезать поле, поставить флажок с подписью). 2. Программировать ее сложнее. 3. Как обрабатывать взаимодействие с пользователем в OpenGL не помню. (например: выделить несколько объектов, разрезать их по линии). Но точно сложнее, чем в случае с формой. Вообще на самом деле вопрос двоякий. Я хочу и решить чисто практический вопрос и разобраться с теорией.:) |
PhilB, я могу тебе через PM дать ICQ одного из разработчиков одной геоинформационной системы Zulu(российская разработка), можешь кратенько у него спросить. А вообще аська есть на их сайте, там же и форум есть - http://www.politerm.com.ru/forums/index.php
Мне кажется, они из первых рук лучше подскажут, как надо сделать. |
Delirium, Благодарю. Аську пока не надо. Меня тут намедни пообещали познакомить с товарищем, который "не одну собаку на этом съел".
Посему пока поспрашиваю тех, кто поближе.:) И пользоваться советом lxa85. Начну с простого рисования... Если производительности не хватит, буду пробовать OpenGL. От дальнейших советов не откажусь:) |
Все никак руки не доходили отписаться о результатах. Вдруг кому интересно. :)
В Qt обнаружился мощный полноценный графический движок Graphics View Framework, который предоставляет очень немалые возможности для работы с двухмерной графикой, его возможностей оказалось в целом достаточно. (Хотя и для хранения пространственных данных приходиться использовать свои структуры.) Производительности вроде пока хватает, данный фреймворк использует аппаратное видеоускорение, если это возможно. (В частности нужны фирменные драйвера на видеокарту, при их отсутствии аппаратное ускорение вероятнее всего окажется недоступным). То есть производительности в целом хватает. (Хотя без драйверов притормаживает ощутимо). Считаю тему решенной. Спасибо откликнувшимся :) |
PhilB, спасибо за отзыв. :)
|
Время: 08:30. |
Время: 08:30.
© OSzone.net 2001-