![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
BreakMeThunder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Скажите что нужно использовать чтобы достич быстрого отображения бмпэшек? Я рисую на битмапе и передаю его паинтбоксу, но все-равно скорость отрисовки не достаточная! Что же делать? Если можно поподробнее.
|
|||
|
||||
VICTAR |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
А почему бы сразу не рисовать на PaintBox?
|
|||
|
||||
BreakMeThunder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
я делал так специально, это еще вроде называется двойная буфферизация, чтобы не был виден процесс отрисовки.
|
|||
|
||||
VICTAR |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Если тебе нужна двойная буфферизация, то сделай как написано в топике ниже (положи PaintBox на Panel или что-нибудь подобное и присвой DoubleBuffered:=true).
|
|||
|
||||
BreakMeThunder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
сделал все так... но все-равно как то медленно отрисовывается... я несколько поясню задачу - дело в том что я делаю тайловую рпг, где при передвижении игрока происходит постоянный скролл. Размер одного тайла 30х30, размер видимой карты 19х19. Может еще что-нибудь посоветуете?
|
|||
|
||||
VICTAR |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Как мне кажется, стоит взглянуть на процедуру перерисовки...
|
|||
|
||||
BreakMeThunder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
BreakMeThunder, А вообще сам битмап умещается в памяти или нет. Какого размера картинка?
Возможно рисуется картинка превосходящая по размеру область экрана. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
BreakMeThunder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
битмап размера 570х570
|
|||
|
||||
Nicholas_S |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
BreakMeThunder, копирование изображения происходит быстро, вопрос в скорости построения изображения. Ты можешь в этом убедиться, засекая время по отдельности для отрисовки и для копирования картинки.
Для рисования, особенно для динамической смены изображений, использовать стандартный bitmap не есть оптимальный вариант. Для этого советую попробовать какой-нибудь сторонний компонент с высокой скоростью отрисовки. Например, очень хорошим является компонент TFastDIB, которым пользуюсь уже вот несколько лет и не нарадуюсь. Комопонент распространяется под GPL лицензией и ты можешь его найти в сети. Среди возможностей такие как: быстрое обращение к любому пикселю канвы, алгоритмы вывода примитивов, сглаженных линий, конвертирование глубины цвета, масштаирование и проч. В поставке идут неплохие примеры, так что разобраться не составит труда. -------------------- ...все в мире относительно |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Nicholas_S, я читал одну статью про делфийские компоненты для поддержки битмапов. Сравнивались 6 популярных библиотек, в том числе и стандартный TBitmap. Так вот он оказался по середине при этом отрыв по отношению к его соседям был небольшой, не больше 30%. Так что он нет так уж плох по скорости. Скорее всего тормозит не сама отрисовка учитывая, что размер картинки весьма невелик.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Nicholas_S |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
Alexeis, конечно, стандартный bitmap не так уж и плох, однако сам понимаешь, использование для попиксельной работы с канвой вызывает иногда мандраж - скорости не хвататет (если посмотреть вглубь кода при получении/устновке цвета пикселя TCanvas, то сразу становится понятно, куда пропадает скорость).
Для рисование стандартных примитивов аля квадрат/круг TBitmap более чем достаточно, безусловно. Просто думаю если автору поста будет интересно, посмотрит. TFastDIB мне чем понравился - это компонент по из разряда "вес продумано", наровне с TVirtualTree: грамотно, просто и доступно. В данном примере скорость отрисовки тормозит, конечно. -------------------- ...все в мире относительно |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Кто же требует использования Pixels ? для таких вещей придумали быстрый ScanLine, который отлично справляется с задачей попиксельного вывода. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Nicholas_S |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
Alexeis, лично я не люблю сканлайн изначально, неудобная штука. Насчет простых примитивов я сказал выше
![]() -------------------- ...все в мире относительно |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Nicholas_S, Чего его не любить? Это же прямой адрес карты в памяти. Какая разница как он получен? Если не нравится можно его самому переписать (в соседней теме я написал свой ScanLine). Что же может быть быстрее прямой записи в память? Только операции в видеокарте.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |