|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.02.2008, 17:40 | #31 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
|
|
09.02.2008, 22:23 | #32 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Делимся опытом 1
Господа, и вот вы наконец подошли к необходимости использования GDI, и это верно, если OGL и DirX не в счет, то быстрее способов нет. Как же Canvas? ...он работает быстрее, чем вам кажется, вот только применять его нужно знаючи. Поделюсь опытом, конкретно по пунктам, что нужно проводить в циклах, и как организовать быструю прорисовку кадра.
Сначала структурно: 1) Готовим буфер заднего плана в памяти (выполняется по требованию), он всегда хранит задник; 2) Записываем в кадр буфер через Canvas (кадр - переменная TBitmap); 3) Рисуем в кадр объекты (в памяти); 4) Отображаем кадр (модифицированный в памяти) через Canvas. ...все. Мерцание исключено, т.к. отображение выполняется только последним пунктом, в Image или PaintBox отображаются только следующие друг за другом готовые кадры, никаких стираний в момент отображения. Этот алгоритм у меня рисует поле 1024х768 24 кадра в секунду, послойно, объектов много, анимированные и статичные, качество 24 бита, BMP с масками альфа-канала, загрузка процессора 4% , ОЗУ 64М, ну это из за хранения в памяти текстур анимации (275х250 пкс). Не претендую на авторство методов, если кто-то узнает свои строки, им низкий поклон. 1) Как создать в памяти буфер под TBitmap Подготовка. Запишем нужные переменные прямо вот так: Код:
Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 09.02.2008 в 22:49. |
09.02.2008, 22:29 | #33 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Делимся опытом 2
Мы создали в ручную две переменные TBitmap, они пустые, размером с наше игровое поле (экран игры), мы знаем где они у нас в ОЗУ.
Заполнение буфера задником бывает разное, например тайловое, ...я покажу простейшее битовое, допустим задник - картинка BMP формата, с нужной битностью: Код:
2) Записываем в кадр буфер Код:
Организовываем цикл пробежки по ячейкам массива (в основе игры всегда некоторый скелет пространства, код объектов и пр.) Код:
Код:
По поводу точки, кружков или прочего, ...это оч. просто рисуется однажды на канве переменной TBitmap, затем используется как картинка, ...думаю эта точка подразумевает в последствии объект более сложный.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 09.02.2008 в 23:08. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть | Дикий | Помощь студентам | 7 | 12.05.2008 17:57 |
Принадлежность точки | UnFaithful | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 08.01.2008 06:16 |
Помогите рассчитать положение и движение точки N на отрезку DK | Stark[SG!] | Помощь студентам | 8 | 14.12.2007 10:08 |
Блокировка точки !! | ***СкаЙ*** | Помощь студентам | 1 | 13.06.2007 14:14 |
Help!!!Движение точки по поверхности сферы | alex23xandr | Помощь студентам | 4 | 20.05.2007 14:45 |