![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#461 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
mutabor, да, BitBlt медленный. Попадает все это дело у меня на экран в PaintBox серез Canvas.Draw , уж времени небыло кувыркаться с поисками, занимаюсь буферами.
Построковое копирование памяти, как предложил Kostia в начале было пока самое быстрое. Очень хочется выполнить пример alexBlack'а, раз делается все через GetDIBits/SetDiBits и сравнить с последним от mutabor'а CopyMemory(@Buffer,@Fon,SizeOf(Fon) ); , но вот я в ступор вошел, ... как GetDIBits/SetDiBits применить правильно, у меня буферы уже созданы вот так: Код:
Код:
Да, ребята, буферы огромные 1024х768х24bit , перекидывание буферов это только 1/20 часть всего цикла, там работа в памяти, объекты большие, с альфа-каналами, ...огромное количество расчетов, обрезка, ... и на все построение кадра дается не более 31 мс! Вот оно как. P.S. никаких кистей шрифтов у меня не применяется, поскольку работа только с пикселами, а шрифт - это графика.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 19.04.2008 в 22:13. |
![]() |
![]() |
![]() |
#462 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#463 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
mutabor, CopyMemory(@Buffer,@Fon,SizeOf(Fon) ); работает аналогично , вот этому Buffer:=Fon , что дает схлопывание буферов, такой эффект происходит потом с анимацией, как пленка с огромной выдержкой, ...ну вы в курсе, каждый кадр поверх другого а если были прозрачности то они постепенно затеняются в непрозрачные, и длинные шлейфы от персонажей, передвигающихся но карте )))
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#464 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Ну тогда Canvas.Draw самый быстрый )
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#465 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Вот, что получилось, перечисляю в порядке места за скорость:
1) Canvas.Draw 2) For y:=0 to H-1 dо CopyMemory(DrawBuf.ScanLine[y],TerrBuf.ScanLine[y],W*3); (второй, который выложил Kostia (MoveMemory) схлопывает оба буфера) 3) GetDIBIts/SetDIBits 4) BitBlt 5) Assign Я смотрю по загрузке процессора, она у меня приоритет, так как тормозов в графике в любом случае не наблюдается. Что можно сделать еще? ...думаю выдрать из Canvas.Draw только необходимое, и перетащить в цикл. Очень странно, ... на другой машине, Сanvas самый тормозный , ...ничего не понимаю :/
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 20.04.2008 в 00:00. |
![]() |
![]() |
![]() |
#466 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]() Цитата:
На моей машине заметил, если не указать битность битмапу приемнику, то Draw рабоает почти в два раза быстрее (при копировании в него 24-х битной картинки). За счет чего понятия не имею, но работает.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
|
![]() |
![]() |
![]() |
#467 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Ребят, пожалуйста, проверьте вот такое изменение последнего варианта, который предложил Kostia:
Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#468 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Проверил. Работает - WinXP (D3 и TurboDelphiExpress)
|
![]() |
![]() |
![]() |
#469 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]() ![]() Сам по себе MoveMemory содержит вот такой код (Windows.pas): Код:
Код:
![]() Вопрос, ...кто поможет?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#470 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Первое отображение объектов, покрупнее деревьев. Сразу понятно, что это за здание да?
![]()
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Уроки по созданию игр для новичков... | -=DeS=- | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 750 | 14.11.2017 20:26 |
Музыка программистов - как вы относитесь к АРИИ? | Весёлый Жека | Свободное общение | 46 | 10.10.2008 22:32 |
Конкурсы по созданию игр на Delphi | mutabor | Свободное общение | 0 | 15.06.2007 12:40 |
Работа по созданию ПО | remix | Фриланс | 3 | 22.04.2007 11:00 |