Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ускорение вывода графики 
:(
    Опции темы
CrazyDaver
Дата 2.5.2011, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно как можно быстрее вывести bitmap на canvas DrawGrid'а. Стандартный BitBlt не даёт нужной скорости. Как это сделать?
Поможет ли использование библиотек (DelphiX, FastLib, DIBUltra, Graphics32...)?
PM MAIL   Вверх
Dimonka2
Дата 2.5.2011, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Поможет ли использование библиотек (DelphiX, FastLib, DIBUltra, Graphics32...)? 

Не поможет. 

Как рисовал и как измерял скорость рисования?
PM MAIL   Вверх
CrazyDaver
Дата 3.5.2011, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Dimonka2 @  2.5.2011,  17:13 Найти цитируемый пост)
Не поможет.

А что, у них слишком маленький прирост скорости?
Поможет ли использование встроенной в Delphi библиотеки OpenGL?

Цитата(Dimonka2 @  2.5.2011,  17:13 Найти цитируемый пост)
Как рисовал и как измерял скорость рисования?

В памяти нарисован bitmap (около 1000х1000 точек), с которого в OnDrawCell копируется небольшая область (16х16 точек) в каждую ячейку с помощью BitBlt.
Скорость никак не измерял. Проблема в том, что при скроллинге таблицы мерцает крайний столбец или строка в той стороне, куда направлен скроллинг.
Двойная буферизация помогает, но появляются тормоза, и теперь при скроллинге вместо мерцания в крайних ячейках видно как поверх старых bitmap'ов заметно медленно рисуются новые. 
PM MAIL   Вверх
Dimonka2
Дата 3.5.2011, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

А что, у них слишком маленький прирост скорости?
Поможет ли использование встроенной в Delphi библиотеки OpenGL?

Дело не в скорости методов, а в подходе. Если ты хочешь пользоваться DrawGrid-ом, то никакие библиотеки тебе ничего не ускорят.

Цитата

Проблема в том, что при скроллинге таблицы мерцает крайний столбец или строка в той стороне, куда направлен скроллинг.

Мерцание означает, что срабатяет ещё одна перерисовка. Т.е. до того как ты рисуешь. DrawGrid рисует там тоже. 

Можно попробовать написать наследника грида и изменить его поведение. Быстрее чем обычный BitBlt всё равно никакая библиотека в гриде не нарисует.
PM MAIL   Вверх
CrazyDaver
Дата 3.5.2011, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Dimonka2 @  3.5.2011,  10:55 Найти цитируемый пост)
Мерцание означает, что срабатяет ещё одна перерисовка. Т.е. до того как ты рисуешь. DrawGrid рисует там тоже. 

Это как раз и странно. DrawGrid, когда я начинал писать программу, при скроллинге или перекрытии формы другим окном сам не запускал событие перерисовки ячейки. Пришлось добавить свою перерисовку в событие формы OnPaint. Теперь же, я полностью удалил всё из OnPaint, и всё равно DrawGrid перерисовывается. Я полностью проверил код программы - ничто не может его перерисовывать.
PM MAIL   Вверх
Dimonka2
Дата 4.5.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Я полностью проверил код программы - ничто не может его перерисовывать. 

Смотри события грида Wm_Paint, Wm_EraseBackground итд. Наверняка там куча всего интересного происходит. 

Рекомендую наследоваться от чего-нибудь типа TCustomDrawGrid и сделать свою правильную реализацию. Почитай о том как создавать компоненты, как регистрировать компоненты итд. Всё прекрасно будет рисоваться без всяких directx или opengl
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




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


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

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