Войти
Вело-изобретателиФорумSR2D - софтовый 2D движок

SR2D, тестируем x64 версию. (2 стр)

Страницы: 1 2 3 4 5 Следующая »
#15
18:57, 15 сен. 2019

Mikle
я точно попал в параллельную вселенную, эффект Манделы
до недавнего времени был уверен, что 100% jpeg - lossless
теперь еще и в бмп альфа бывает (сам сейчас на сейве это увидел)

ну для пиксель арта бы не помешал
допустим есть маленький пиксель арт, к примеру, и скейлишь его в два раза, что-бы не мылилось
по-моему в тот самый раз об этом и спрашивали

как вариант если-бы можно было выбирать

#16
(Правка: 1:02) 0:19, 18 сен. 2019

Mikle
Что-то я опять трою

есть спрайт куда все будет рисоваться

SpriteOutput
допустим
и есть два спрайта sprite1 просто картинка, sprite2 картинка с альфой

я рисую так

SpriteOutput.Draw(SpriteNoAlpha,0,0)
SpriteOutput.Draw(SpriteAlpha,0,0,Op.AlphaBlend)

вывожу spriteoutput и получается дичь, либо первый спрайт (который типа бэкграунд) рисуется поверх, а того не видно или он позади, либо еще чтото

сделал вот так

SpriteOutput.Op  = Op.Paint
SpriteOutput.ClearBuffer(ARGB(255,255,0,0))
SpriteOutput.Draw(SpriteNoAlpha,0,0)
SpriteOutput.Draw(SpriteAlpha,0,0,AplhaBlend)
SpriteOutput.PaintToDevice(Hdc)

и результат просто красный квадрат.

ничего понять не могу...

ps
я помню, что там была проблема что спрайт портил альфу
но не уверен в этом ли дело сейчас
вроде вот недавно рисовал и нормально все было, что там было по другому не уверен
но именно базово, что спрайт клеарится цветом, а поверх рисуется другой спрайт с альфой, и почему-то показывается только цвет которым клеарил...

#17
(Правка: 9:41) 8:23, 18 сен. 2019

SilentPrayerCG
> SpriteOutput.Op  = Op.Paint
Эта строка не нужна - имеет смысл только Op источников.
> SpriteOutput.ClearBuffer(ARGB(255,255,0,0))
Эта тоже не нужна - всё равно SpriteNoAlpha всё затрёт, в том числе альфаканал.

Но всё должно работать и так, дай проект с файлами картинок, посмотрю.

#18
10:19, 18 сен. 2019

Mikle
я забыл, а как должно быть вообще?
если я хочу сделать спрайт цвета А
и нарисовать спрайт Б с альфой на него?
и потом все это вывести в буфер который уже нарисовать на девайс?

щас я попробую разобраться в чем там дело было...  но почему-то рисовался только цвет которым я клеарил

#19
10:27, 18 сен. 2019

SilentPrayerCG
> а как должно быть вообще?

  SprBack.ClearBuffer(ARGB(255, 255, 0, 0))
  SprBack.Draw(SprAlpha, 0, 0, Op.AlphaBlend)
  SprBack.PaintToDevice(hDC)
#20
(Правка: 10:52) 10:51, 18 сен. 2019

Mikle
Сорян, я вчера (сегодня уже получается) до 3ех ночи кодил, и уже голова видимо спеклась
я в начале главному буферу присвоил спрайт который хотел вывести в начале для превью (временно), а потом этот же спрайт начал изменять
надо было не присваивать а через конструктор новый создать в нем
они связались вместе и началась ерунда

Мой косяк. Ну вот и хорошо, а то я уже боялся, какой-нибудь глюк случился не отлавливаемый.

а вот насчёт засарение альфы, получается, если спрайт 1 не прозрачный, я рисую на него спрайт 2 - прозрачный, спрайт 1 получает его альфу так?, если если я спрайт 1 нарисую на спрайт 0 с блендом, то он получиться нарисуется с альфой от спрайта 2 так?

#21
13:46, 18 сен. 2019

SilentPrayerCG
Сейчас AlphaBlend уже не портит альфу, какая была - такая и останется.

#22
18:02, 18 сен. 2019

Mikle
Понял, это хорошо.

#23
23:24, 21 ноя. 2019

Привет! у меня несколько недель тоже подобные ошибки начались и при полном отключении в векторном движке обращений к sr2d ошибки пропадали. Ранее всё работало ровно но недавно сначала при изменении размера экрана вылетало а потом по нарастающей и просто при движении изображения. при ресайзе делался Init с новыми размерами спрайта экраного буфера - сам Init норм, а вот при обращении в асм процедуру спрайта вылет (причём в последний месяц не менял движок - просто пользовался при однотипной задаче). попробывал жёстко блокировать весь движок на момент ресайза, вдруг успевает обращение пройти до завершения процедуры Init - помогло ненадолго.
Одним словом на РАССИНХРОН инициализации массива пикселей с обращением к этому массиву похоже.
Начинаю переписывать движок на раздельные буферы изображения (ранее был спрайт рисования и спрайт вывода изображения куда копировался результат из рисовального спрайта - сделал так для упрощения вывода интерфейса поверх изображения). Ну а теперь буду делать два раздельных спрайта рисования с чередованием использования чтобы реинициализация размера спрайта делалась автоматом на неиспользуемый спрайт, а потом следующий кадр в нём рисовать и соответствено Init уже на другой - отпишусь по результату, но не ранее пары недель

#24
23:30, 21 ноя. 2019

P.S. ошибки как в теме из которой обсуждение перешло в эту ветку https://gamedev.ru/community/bycircle/forum/?id=138790&page=45
написал уже тут так как в теме источнике разговор затих

#25
23:34, 21 ноя. 2019

упс забыл спросить - получилось ли разобраться в обсуждаемых ошибках из темы источника, а то я тут нагородю огород. (хотя всё равно переделаю движок для спокойствия)

#26
8:30, 22 ноя. 2019

Neirapik
> написал уже тут так как в теме источнике разговор затих
Тут обсуждаем x64 версию, если у тебя задействована x86, то лучше поднять старую тему.
Neirapik
> РАССИНХРОН
Потоки используются, или всё в один поток?
Neirapik
> получилось ли разобраться в обсуждаемых ошибках из темы источника
Каких именно? Последнее время ошибки были только в x64.

#27
11:23, 22 ноя. 2019

поток один, но ресайз асинхронен и создаёт ненадолго отдельный поток, и да х86

#28
11:24, 22 ноя. 2019

мне начинает казаться что ошибка не в sr2d а в каком-то изменении порядка выделения памяти под массив что выполняется в конечном счёте системой!

#29
11:57, 22 ноя. 2019

Neirapik
> ресайз асинхронен и создаёт ненадолго отдельный поток
Вот тут и надо дождаться завершения работы потока.

Страницы: 1 2 3 4 5 Следующая »
Вело-изобретателиФорумSR2D - софтовый 2D движок