Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимальный алгоритм отрисовки элементов 
:(
    Опции темы
mzconcept
Дата 10.6.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



Давайте разработаем совместно оптимальный алгоритм отрисовки визуальных элементов?

Добавлено через 9 минут и 27 секунд
Кто-нибудь посоветует с чего начать? или есть уже готовый алгоритм?
PM MAIL   Вверх
Lazin
Дата 10.6.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



а какой критерий оптимальности.. качество или скорость или еще что..

Добавлено через 38 секунд
Цитата(mzconcept @  10.6.2008,  11:56 Найти цитируемый пост)
или есть уже готовый алгоритм? 

алгоритм Брезенхейма?
PM MAIL Skype GTalk   Вверх
mzconcept
Дата 10.6.2008, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



Цитата

алгоритм Брезенхейма?


не... не то...

Рассмотрим следующий рисунок:

user posted image

красный овал, зелёный RoundRect и синий прямоугольник лежат на сером прямоугольник...
меняем размеры зелёного объекта... и нужно перерисовать...

по какому алгоритму действовать, чтобы не перерисовывать всю картинку?

Это сообщение отредактировал(а) mzconcept - 10.6.2008, 14:05
PM MAIL   Вверх
JackYF
Дата 10.6.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(mzconcept @  10.6.2008,  13:03 Найти цитируемый пост)
чтобы не перерисовывать всю картинку?

Рекомендую посмотреть исходники Qt, там подобное уже реализовано. На пальцах - есть z-buffer, надо перерисовать один из элементов. Находишь суммарную область пересечения с объектами, лежащими ниже, найденный массив пикселей перерисовываешь.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Lazin
Дата 10.6.2008, 14:52 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



в данном случае проще перерисовать всю картинку =)
PM MAIL Skype GTalk   Вверх
JackYF
Дата 10.6.2008, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Lazin, если CPU позволяет или перерисовка редкая - то да smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
andrew_121
Дата 10.6.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Lazin
Цитата

алгоритм Брезенхейма?

Прошу прощения за придирчивость, дабы не вводить в заблуждение:
алгоритм Брезенхема.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
jonie
Дата 10.6.2008, 22:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



JackYF а чего вон GPU простаивает... пусть работает 8)

по поводу удаления невидимых поверхностей можно почитать я пологаю доки по 3D графике... 100% это есть. и вообще есть туча умных книжек по комп грфике.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
mzconcept
Дата 11.6.2008, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



Перерисовка всей картинки не оптимальна, предполагается большое количество элементов - будет просто тормозить...

Это сообщение отредактировал(а) mzconcept - 11.6.2008, 06:39
PM MAIL   Вверх
mzconcept
Дата 11.6.2008, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



Решение этой задачи выглядит как на картинке:

user posted image


PM MAIL   Вверх
georain
Дата 11.6.2008, 09:04 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 28.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Попиксельный вывод с использованием z-буфера - немного тормознуто, зато простота в реализации и константное время отрисовки (время вообще не зависит от к-ва элементов [если нет прозрачности]).
Есть вариант использовать 4-деревья, а также деревья взаимных перекрытий для отрисовки только нужных элементов.
А вообще велосипед.smile

Добавлено через 7 минут и 54 секунды
mzconcept, вы GUI хотите делать или 2Д графику? Подходы разные.
PM MAIL   Вверх
vinter
Дата 11.6.2008, 10:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(jonie @  10.6.2008,  23:04 Найти цитируемый пост)
JackYF а чего вон GPU простаивает... пусть работает 8)

GPU не будет работать если не юзать графические пакеты, все будет идти через CPU
Цитата(mzconcept @  11.6.2008,  07:38 Найти цитируемый пост)
Перерисовка всей картинки не оптимальна, предполагается большое количество элементов - будет просто тормозить...

тебе это зачем? для саморазвития или важен результат? если для саморазвития качай\купи книги по КГб если важен результат юзай OGL | DX


--------------------
Мой блог
PM MAIL WWW   Вверх
Lazin
Дата 11.6.2008, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(mzconcept @  11.6.2008,  06:38 Найти цитируемый пост)
Перерисовка всей картинки не оптимальна, предполагается большое количество элементов - будет просто тормозить...

но тем не менее.. для начала реализуй z-буфер, что-бы элементы у тебя перерисовывались в правильном порядке, а потом уже думай об оптимизации...
к тому-же, при полной перерисовке ты сможешь заливать сразу большие площади изображения, что ИМХО быстрее, чем определение видимости каждого пиксела...
как вариант, определять, если виз. элемент нужно перерисовывать хотя-бы частично, то перерисовывать его полностью, а так-же все его дочерние элементы...
зы
на мой взгляд, эта оптимизация не очень важна, так как современный компьютер в состоянии нарисовать довольно много визуальных элементов.. а располагать на форме такое количество визуальных элементов, что-бы начинались тормоза - просто неправильный дизайн приложения, в плане юзабилити..

Добавлено через 2 минуты и 22 секунды
еще вариант - юзать нативный АПИ для работы с интерфейсом, а не рисовать каждую кнопку своим кодом
PM MAIL Skype GTalk   Вверх
mzconcept
Дата 12.6.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



Цитата
вы GUI хотите делать или 2Д графику? Подходы разные


Хочу сделать GUI...

user posted image
PM MAIL   Вверх
vinter
Дата 12.6.2008, 22:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(mzconcept @  12.6.2008,  13:57 Найти цитируемый пост)
Хочу сделать GUI...

че то моя твоя не понимать, ты пишешь что нужно GUI и приводишь пример простенького Paint аналога, ты определился бы что все таки нужно..


--------------------
Мой блог
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0903 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.