![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mzconcept |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 7.5.2008 Репутация: нет Всего: нет |
Давайте разработаем совместно оптимальный алгоритм отрисовки визуальных элементов?
Добавлено через 9 минут и 27 секунд Кто-нибудь посоветует с чего начать? или есть уже готовый алгоритм? |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
а какой критерий оптимальности.. качество или скорость или еще что..
Добавлено через 38 секунд алгоритм Брезенхейма? |
|||
|
||||
mzconcept |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 7.5.2008 Репутация: нет Всего: нет |
не... не то... Рассмотрим следующий рисунок: ![]() красный овал, зелёный RoundRect и синий прямоугольник лежат на сером прямоугольник... меняем размеры зелёного объекта... и нужно перерисовать... по какому алгоритму действовать, чтобы не перерисовывать всю картинку? Это сообщение отредактировал(а) mzconcept - 10.6.2008, 14:05 |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Рекомендую посмотреть исходники Qt, там подобное уже реализовано. На пальцах - есть z-buffer, надо перерисовать один из элементов. Находишь суммарную область пересечения с объектами, лежащими ниже, найденный массив пикселей перерисовываешь. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
в данном случае проще перерисовать всю картинку =)
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Lazin, если CPU позволяет или перерисовка редкая - то да
![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Lazin
Прошу прощения за придирчивость, дабы не вводить в заблуждение: алгоритм Брезенхема. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
JackYF а чего вон GPU простаивает... пусть работает 8)
по поводу удаления невидимых поверхностей можно почитать я пологаю доки по 3D графике... 100% это есть. и вообще есть туча умных книжек по комп грфике. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
mzconcept |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 7.5.2008 Репутация: нет Всего: нет |
Перерисовка всей картинки не оптимальна, предполагается большое количество элементов - будет просто тормозить...
Это сообщение отредактировал(а) mzconcept - 11.6.2008, 06:39 |
|||
|
||||
mzconcept |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 7.5.2008 Репутация: нет Всего: нет |
||||
|
||||
georain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 28.11.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Попиксельный вывод с использованием z-буфера - немного тормознуто, зато простота в реализации и константное время отрисовки (время вообще не зависит от к-ва элементов [если нет прозрачности]).
Есть вариант использовать 4-деревья, а также деревья взаимных перекрытий для отрисовки только нужных элементов. А вообще велосипед. ![]() Добавлено через 7 минут и 54 секунды mzconcept, вы GUI хотите делать или 2Д графику? Подходы разные. |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
GPU не будет работать если не юзать графические пакеты, все будет идти через CPU
тебе это зачем? для саморазвития или важен результат? если для саморазвития качай\купи книги по КГб если важен результат юзай OGL | DX |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
но тем не менее.. для начала реализуй z-буфер, что-бы элементы у тебя перерисовывались в правильном порядке, а потом уже думай об оптимизации... к тому-же, при полной перерисовке ты сможешь заливать сразу большие площади изображения, что ИМХО быстрее, чем определение видимости каждого пиксела... как вариант, определять, если виз. элемент нужно перерисовывать хотя-бы частично, то перерисовывать его полностью, а так-же все его дочерние элементы... зы на мой взгляд, эта оптимизация не очень важна, так как современный компьютер в состоянии нарисовать довольно много визуальных элементов.. а располагать на форме такое количество визуальных элементов, что-бы начинались тормоза - просто неправильный дизайн приложения, в плане юзабилити.. Добавлено через 2 минуты и 22 секунды еще вариант - юзать нативный АПИ для работы с интерфейсом, а не рисовать каждую кнопку своим кодом |
|||
|
||||
mzconcept |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 7.5.2008 Репутация: нет Всего: нет |
||||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
че то моя твоя не понимать, ты пишешь что нужно GUI и приводишь пример простенького Paint аналога, ты определился бы что все таки нужно.. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |