|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.04.2008, 22:02 | #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. |
19.04.2008, 22:22 | #462 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
Код:
|
|
19.04.2008, 22:29 | #463 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
mutabor, CopyMemory(@Buffer,@Fon,SizeOf(Fon) ); работает аналогично , вот этому Buffer:=Fon , что дает схлопывание буферов, такой эффект происходит потом с анимацией, как пленка с огромной выдержкой, ...ну вы в курсе, каждый кадр поверх другого а если были прозрачности то они постепенно затеняются в непрозрачные, и длинные шлейфы от персонажей, передвигающихся но карте )))
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
19.04.2008, 22:45 | #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)
Проверь себя! Онлайн тестирование | Мой блог |
19.04.2008, 23:22 | #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. |
21.04.2008, 12:03 | #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)
Проверь себя! Онлайн тестирование | Мой блог |
|
21.04.2008, 18:18 | #467 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Еще один тест...
Ребят, пожалуйста, проверьте вот такое изменение последнего варианта, который предложил Kostia:
Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
21.04.2008, 20:16 | #468 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Проверил. Работает - WinXP (D3 и TurboDelphiExpress)
|
22.04.2008, 15:29 | #469 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Мы почти победили...
Работает то оно работает, ...интересует у кого как быстро, и быстрее ли канвы и тех методов, что были предложены.
Сам по себе MoveMemory содержит вот такой код (Windows.pas): Код:
Код:
Вопрос, ...кто поможет?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
23.04.2008, 17:04 | #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 |