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

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

Страницы: 1 2 3 418 Следующая »
#15
(Правка: 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
я помню, что там была проблема что спрайт портил альфу
но не уверен в этом ли дело сейчас
вроде вот недавно рисовал и нормально все было, что там было по другому не уверен
но именно базово, что спрайт клеарится цветом, а поверх рисуется другой спрайт с альфой, и почему-то показывается только цвет которым клеарил...

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

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

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

#17
10:19, 18 сен 2019

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

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

#18
10:27, 18 сен 2019

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

  SprBack.ClearBuffer(ARGB(255, 255, 0, 0))
  SprBack.Draw(SprAlpha, 0, 0, Op.AlphaBlend)
  SprBack.PaintToDevice(hDC)
#19
10:51, 18 сен 2019

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

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

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

#20
13:46, 18 сен 2019

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

#21
18:02, 18 сен 2019

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

#22
23:24, 21 ноя 2019

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

#23
23:30, 21 ноя 2019

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

#24
23:34, 21 ноя 2019

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

#25
8:30, 22 ноя 2019

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

#26
11:23, 22 ноя 2019

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

#27
11:24, 22 ноя 2019

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

#28
11:57, 22 ноя 2019

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

#29
12:26, 22 ноя 2019

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

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