arctic-engineers-club

Open full view…

Клонирование спрайтов

bladez-fate
Sun, 17 Dec 2017 09:51:00 GMT

Реквестирую фичу. Нужна функция для создания идентичного спрайта, но с другим sprite_instance внутри

bladez-fate
Sun, 17 Dec 2017 09:54:02 GMT

Понадобилось мне для следующего. У меня в игре есть кнопка которая перезапускает уровень и я хочу чтобы после нажатия на нее вылетал модальный диалог с парой кнопок из разряда "are you sure?"

bladez-fate
Sun, 17 Dec 2017 09:57:54 GMT

Хочется чтобы диалог был реализован функцией, которая возвращает bool и возвращает управление только когда в пользователь что-то сделал с диалогом. Чтобы при этом рисовался правильный фон, я хочу сделать "скриншот" бекбуфера и рисовать его на кадрах диалога. Для "скриншота" как раз и нужна реквестируемая функция

Huldra
Sun, 17 Dec 2017 11:01:28 GMT

Создай новый спрайт и нарисуй на нем фон.

Huldra
Sun, 17 Dec 2017 11:01:41 GMT

2 вызова

bladez-fate
Sun, 17 Dec 2017 11:14:56 GMT

Так при рисовании сейчас проблема с переносом альфа канала, если я потом попробую рисовать спрайт, в который нарисовал фон, то у меня может не все нарисоваться если где-то окажется a = 0. Или это уже пофикшено?

bladez-fate
Sun, 17 Dec 2017 11:46:37 GMT

В целом, пожалуй, рисование даже лучше клонирования. Я понял что на фон надо еще и пару эффектов наложить будет

Huldra
Sun, 17 Dec 2017 11:48:08 GMT

Альфа ещё не пофикшена, скоро доберусь

bladez-fate
Sun, 17 Dec 2017 13:06:58 GMT

в общем сделал пока свой кастыль для рисования. В итоге получилось как-то так [Pilecode-modal2](//muut.com/u/arctic-engineers-club/s3/:arctic-engineers-club:4wbg:pilecodemodal2.png.jpg)

Huldra
Sun, 17 Dec 2017 14:53:37 GMT

Симпатично

Вий
Wed, 27 Dec 2017 15:39:38 GMT

Я тоже хочу такую фичу. Лень писать draw с каким-то безумным количеством аргументов когда нужно сделать копию sprite

Huldra
Wed, 27 Dec 2017 19:08:40 GMT

Хорошо, уговорили, сделаю

Huldra
Mon, 01 Jan 2018 01:15:29 GMT

Готово

Huldra
Mon, 01 Jan 2018 01:16:42 GMT

Теперь у спрайтов есть метод Clone, делвющий из текущего спрайта клона переданного в качестве аргумента. А еще теперь появился второй режим блендинга - копия rgba

Вий
Tue, 02 Jan 2018 15:46:59 GMT

еще нужен режим добавления с насыщением

bladez-fate
Sat, 20 Jan 2018 14:12:45 GMT

> появился второй режим блендинга – копия rgba Hежим блендинга добавился только у функции с самым большим числом параметров. Что за несправедливость, я не хочу все их перечислять

Huldra
Sun, 21 Jan 2018 13:19:58 GMT

А какие ты используешь?

bladez-fate
Mon, 22 Jan 2018 10:56:41 GMT

Разные, в момент написания я пытался просто скопировать "как есть" фон из спрайта в бек буфер. Тут бы и memcpy подошел, но подходящей оказалась только функция с, кажется 10 или 11 аргументами.

bladez-fate
Mon, 22 Jan 2018 11:01:15 GMT

Вообще, я использую свои костыли, изначально скопипащенные из движка и допиленные напильником для того, чтобы применять несколько эффектов в один проход. Например, у меня есть спрайты маски, которые заполнены одним цветом, а альфа-канал собственно содержит маску. Моя функция вначале делает правильный цвет (передается аргументом), а потом альфа-блендит результат в другой спрайт (или бекбуфер).

Huldra
Wed, 24 Jan 2018 22:29:22 GMT

Да, 10-11 аргументов это явный перебор, добавлю простой вариант

Huldra
Mon, 29 Jan 2018 23:51:48 GMT

готово