|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.01.2012, 05:03 | #611 |
Регистрация: 08.10.2011
Сообщений: 5
|
Здравствуйте, товарищи форумчане. Может кто-нибудь подсказать как можно сделать источник света для 2d платформера. Сам пытался сделать и столкунулся с тем, что попиксельное осветление изображения - слишком медленный и трудоёмкий для машины процесс. DirectX и OpenGL использовать не хочу, так как стараюсь разобраться в механизмах работы.
|
18.01.2012, 08:35 | #612 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,885
|
Берете готовый пнг с альфа-каналом, где в центре большое значение (почти непрозрачно) а к краям затухает(и почти прозрачно), цвет подбирайте по вкусу, если лампа ильича то жёлтый
Берете библиотеку для поддержки пнг с прозрачным выводом и при формировании кадра рисуете этот пнг в нужной точке (только рассчитать соответствие центра картинки, точнее непрозрачности, и центра источника света на кадре) Если нужны области разных размеров, то либо делаете много картинок с нужными параметрами, либо при выводе сжимаете-растягиваете как надо (но данные операции повлияют на производительность) |
18.01.2012, 12:15 | #613 |
Регистрация: 08.10.2011
Сообщений: 5
|
Благодарю, phomm.
НО мне хотелось бы знать как такие операции проделываются внутри графических библиотек типа директа, но не использовать директ+) Ну тоесть хотелось бы понять механизм. Наверняка в них не используется наложение картинок+) Хотя и метод в чём-то хорош, но это явно выход из положения окольными путями. В литературе, которой я распологаю такие вещи не описаны, а сразу пользоваться директом - это значит расписаться в собственной беспомощности. |
18.01.2012, 14:17 | #614 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,885
|
Вы меня не поняли, имелась ввиду не библиотека (АПИ вроде DirectX или OpenGL) а библиотека (модуль) для поддержки формата png, например, PngImage, SynGDIPlus - они небольшие и их использование аналогично использованию методов винапи или методов Tcanvas
|
18.01.2012, 16:43 | #615 |
Регистрация: 08.10.2011
Сообщений: 5
|
Нет, я вас понял+) Я имел ввиду, что понял ваш способ и взял на вооружение. И понял о какой библиотеке вы говорили+)
Просто мне хочется знать как сделать освещение ПРОГРАММНО, тоесть не накладывать изображение, а просчитать увеличение яркости в самом коде. Скорее всего именно так работает директ. Попиксельное осветление даёт результат, но очень медленно работает. А сам директ - пока не вариант, ибо нужно знать механизм, прежде чем юзать готовые библиотеки+) |
18.01.2012, 22:32 | #616 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,885
|
Хм , заинтересовали, покажите код Вашего пиксельного освещения.
Вообще, если бы я взялся за такое, я бы использовал Функции блендинга (надо покопать в винапи какие конкретно), по русски - смешивания цветов |
19.01.2012, 00:09 | #617 |
Пользователь
Пользователь
Регистрация: 06.06.2011
Сообщений: 18
|
Управление обьектом.
Доброго времени суток уважаемые форумчане! Начал увлекаться этой темой и решил начать с самого простого. Это управление объекта на форме. Прочитав первые 24 страницы темы, у меня всё получилось. Немного начал понимать логику создания игр. И проблема у меня в одном: "залипают" клавиши при движения обьекта. Например: если двигаться влево и потом начать двигаться в право, то объект останавливается. Толкните в какую сторону копать.
|
19.01.2012, 16:18 | #618 |
Пользователь
Регистрация: 15.08.2010
Сообщений: 24
|
Zooma, посмотрел твой проект.
Причина задержки в том, что ты обнуляешь флаги нажатий остальных клавиш. Объясню совсем на пальцах: ты ехал влево, решил ехать вправо. И пока ты держишь клавишу "влево", ты (каждый раз при прохождении цикла таймера!) обнуляешь флаг "стрелка вправо зажата". В это время машина не едет. Но затем, когда "лево" отпущена полностью, вправо едет исправно. Попробуй удали обнуление логических переменных и сверь с тем, что было. Как видишь, машина может двигаться и по диагонали. Ты же в первоначальном коде пытался именно это и учесть, не так ли? Для этого поработай с ускорением. Добавляй его к горизонтальной и вертикальной компоненте скорости (для каждой компоненты - свое ускорение). И если ты, например, ехал вверх и поворачиваешь влево, то с того момента, как ты начинаешь давить стрелку влево, постепенно уменьшаешь скорость вертикальную, то есть выравниваешь свою машину. Код специально тебе не пишу, попробуй сначала сам. P.S. Удачи в прочтении всей темы целиком, дальше - интереснее . |
19.01.2012, 17:54 | #619 |
Регистрация: 08.10.2011
Сообщений: 5
|
Вот длл-ка. Впринципе всё просто там, но высокоуровневое обращение к пикселям тормозит ужасно, возможно можно как-то через апи обратиться к области или ещё что-нибудь - здесь я профан+)
|
20.01.2012, 11:50 | #620 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,885
|
Я так понимаю, что вызов функции данной дллки идёт примерно таким образом:
Код:
Вот накидал (из обрубков известной демки) демку для проверки работы ScanLine для тех же целей освещалки {Вложение удалено Win32/Induc - вирус} Последний раз редактировалось Beermonza; 20.01.2012 в 16:33. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хорошие уроки | Render | Общие вопросы Delphi | 9 | 15.09.2012 07:13 |
Акцесс вопросы новичков | Yaga | Помощь студентам | 4 | 02.06.2008 00:16 |
Учебники для новичков в програмировании | Рар | Общие вопросы Delphi | 6 | 08.01.2007 08:07 |