![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#631 | |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#632 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Вот как? ...я уловил смысл неправильно видимо.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#633 |
Форумчанин
Регистрация: 24.07.2008
Сообщений: 279
|
![]()
Вы тут говорили про mmx почитал - все просто, вот только как для рисования спрайта его применить не пойму, одноцветный, полупрозрачный прямоугольник наложить получилось, а вот с разноцветными пикселями пока застрял.
Могете намекнуть?
Сказал и загрустил от бесспорности своей правоты.
|
![]() |
![]() |
![]() |
#634 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Это послужит своеобразным уроком, сподвигнет всех желающих искать методы самостоятельно и в других областях кроме графики, хитровымудренным примером откинув Canvas туда от куда он пришел (юмор). Комбинации и наработки предложены товарищами по программированию (вы очевидно читали предыдущие посты поиска решений), за что им спасибо. Опишу все именно в этой теме, поскольку это только моменты, к новичкам не имеющие ни какого отношения в виду достаточной сложности.
Подготовка Рационально использовать и хранить спрайты в формате PNG, поэтому в секции uses нужно вставить библиотеку PNGImage. Будем использовать отдельно текстуру и отдельно альфаканал, содержащийся в PNG-файле. Вот так загружаем спрайт: Код:
Код:
Код:
Код:
Код:
Код:
Теперь перезапишем переменную Buf для маски: Код:
Код:
Код:
Несколько слов о том, на чем рисуем. Это буфер, он скрыт от пользователя, в нем рисуется изображение кадра и потом передается на буфер экрана, который выводится с нужной периодичностью. Как создаются буферы, вы уже наверное знаете из предыдущих постов, ...через команду CreateDIBSection.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#635 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Отрисовка
Приведу простой пример отрисовки спрайта в буфер кадра, без обрезки, если не проводить ее и не контролировать положение на экране, как и положено вылетит ошибка, и будет вылетать с частотой смены кадров, поэтому по-началу все отправляется в структуру try..except..end, потом ее нужно убрать, когда будет полная гарантия, что код всегда будет работать корректно. Вот пример: Код:
Код:
![]()
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 25.01.2009 в 21:09. |
![]() |
![]() |
![]() |
#636 |
Форумчанин
Регистрация: 24.07.2008
Сообщений: 279
|
![]()
Ага, попробую понять (я пока на сессии и работаю чисто с теорией).
Метод смешивания, как я и понял целочисленный, который приводился в ранних постах, так вот он не идеален - при попытке создания эффекта размытия (заливал экран прозрачным цветом), я получил плохо различимые следы от объектов, хотя для вывода спрайтов метод действительно наилучший.
Сказал и загрустил от бесспорности своей правоты.
Последний раз редактировалось 0nni; 27.01.2009 в 14:59. |
![]() |
![]() |
![]() |
#637 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Да, именно, метод заточен на скорость вывода спрайтов, ...при этом предполагается, что все эффекты с анимацией уже проделаны заранее (обработка исходной анимации и сохранение в параллельные массивы), после чего результаты используются так же как и исходная анимация. Я вообще не вижу смысла проделывать одно и тоже кадр за кадром, если можно выполнить обработку всей текущей анимации в мгновение и использовать как стандарт до определенного игрового момента.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#638 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Кто знает, SetDIBitsToDevice() в реале быстрее отправит граф. данные на форму чем BitBlt()? ...тесты что-то не показывают разницы, на моем компе одинаковая скорость.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#639 |
Форумчанин
Регистрация: 24.07.2008
Сообщений: 279
|
![]()
Есть же стандартные способы замера
Код:
Сказал и загрустил от бесспорности своей правоты.
|
![]() |
![]() |
![]() |
#640 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
У меня по FPS отмеряет, результат один и тот же, и по загрузке CPU аналогично, и есть подозрение что различия будут на компах послабее. Ладно, попробую "чего по страшнее" ).
Руководитель проекта 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 |