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

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

Страницы: 116 17 18 19 20 21 Следующая »
#270
23:12, 15 июня 2025

Mikle
А. Понял, принял.
Ну ладно, если что через битмап отскейлю тогда. Я просто боялся, что может где-то у меня косяк, но если переполнение, тогда понятно.

Ты кстати как-то упоминал, что хотел новую версию ср2д делать? Не ждать?)

#271
23:19, 15 июня 2025

SilentPrayerCG
> Ты кстати как-то упоминал, что хотел новую версию ср2д делать? Не ждать?
С одной стороны - не хочется обнадёживать. С другой - я когда-то давно Alprogу писал, что скейл и поворот - это слишком круто для простого спрайтового софт движка, а потом всё-таки сделал это.

#272
16:04, 19 июня 2025

Mikle
привет
кажется нашел проблему, что если у drawline одна из точек, запределами битмапы, (причем нормально только если X > ширины спрайта) то линия улетает ровно вниз или ровно вверх. т.е если рисовать от центра спрайта линиями круг во все стороны, то только те линии у которых 2ая точка уходит за предел ширины нормально рисуются. остальные либо прямая линия вверх либо прямая линия вниз или влево.

Сейчас еще код чекну самой отрисовки линии, а то может при портировании что-то сломал.

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

может это так и должно быть? с друго стороны права же нормально когда за пределами
хотя я вот вижу тут какие-то выходы из процедуры есть
          if (p1.y > B || p2.y < T) { return; }

#273
19:22, 19 июня 2025

SilentPrayerCG
Сейчас под рукой нет NET языков. Проверил на VB6 - всё работает нормально.
Вот проверочный проект: https://disk.yandex.ru/d/hjFgcM2jHINxEQ
Я так понял, ты сам сделал 64-битную версию для шарпа из моей vb-версии порта?
Попробуй глянуть шарп код в 32-битной версии: https://disk.yandex.ru/d/JhOoqcSThmP7c
Там же код разной битности практически не отличается, разница в основном в инициализациях и декларациях.

#274
(Правка: 15:00) 6:03, 20 июня 2025

Да я вроде так и делал) Но ок я чекну, значит я наверное что-то упустил.

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

#275
13:28, 22 июля 2025

Mikle
Привет. А такой операции как Blit в SR2D нет? Я так понимаю это как Draw только фрагмента src спрайта. Или только заранее создать спрайт, и туда нарисовать, и потом уже рисовать этот спрайт куда нужно?

#276
13:35, 22 июля 2025

SilentPrayerCG
> Я так понимаю это как Draw только фрагмента src спрайта. Или только заранее создать спрайт, и туда нарисовать, и потом уже рисовать этот спрайт куда нужно?
Можно настроить Lock Rect, чтобы не готовить промежуточный спрайт.

#277
14:48, 22 июля 2025

Mikle
А подскажи как будет работать это?
Если спрайту сделать SetLockRect, то что будет?
У system.graphics такое есть вроде, но это позволяет рисовать только на указанной области вроде.

#278
15:41, 22 июля 2025

SilentPrayerCG
> это позволяет рисовать только на указанной области вроде
Да, тут так же. Делаешь спрайту-приёмнику LockRect на область, куда должна попасть нужная часть источника.

#279
12:25, 25 июля 2025

Mikle
Да, кажется понял. Что-то голова плохо соображает вообще последнее время.

Еще нашел странность, но не уверен туплю может я опять.

Создем спрайт 1. закрашиваем цветом 0 (т.е альфа 0)
берем спрайт 2 загружаем в него пнг
рисуем спрайт 2 на спрайте 1 с альфаблендром.. в результате просто прозрачность.
а вот если альфатест сделать то нормально получается.

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

#280
14:14, 28 июля 2025

SilentPrayerCG
> в результате просто прозрачность.
А ты какого результата ожидаешь?
Я сейчас проверил x32 версию - альфа тоже накладывается с альфа-наложением.
В x64 не так? Могу поправить, просто нет стандарта, как должно быть. Если x64 код альфу вообще не трогает, то, по идее, это более правильно.

#281
21:28, 28 июля 2025

ну, я рисую на спрайт который пустой (весь залит цветом 0), картинку, у которой альфа вся 255, и получается что результат просто пустая картинка.
либо я что-то не понимаю
альфа тест нормально тоже самое рисует.

#282
22:24, 28 июля 2025

SilentPrayerCG
Так всё-таки, какого результата ожидаешь?
Результат то не пустой получается, просто в нём по-прежнему нулевая альфа. Или я тебя не понял, результат действительно пустой?

#283
9:59, 29 июля 2025

Mikle
Смотри
вот такой код для примера, без внешних файлов

   Sprite s0 = new Sprite(1024, 1024);
   Sprite s1 = new Sprite(768, 768);

   s0.ClearBuffer(0);
   s1.ClearBuffer(SR2D.ARGB(255, 64, 64, 255));
   s0.Draw(s1, 0, 0, SR2D.Op.AlphaBlend);

   int c0 = s0.GetPixel(1, 1);
   Color cl0 = Color.FromArgb(c0);

и cl0 показывает такие цифры
a = 0 (почему?, если я рисую не прозрачной картинкой на прозрачный задник? но я тут логику фотошопа применяю, с пустым слоем)
r = 63
g = 63
b =254
почему на 1 меньше, чем спрайте которым я рисую

а если поменять оператор на альфа тест, то нормально
255, 64, 64, 255

#284
9:50, 30 июля 2025

SilentPrayerCG
> почему на 1 меньше, чем спрайте которым я рисую
Это есть. Сделано для повышения быстродействия - сдвиг на 8 бит (то есть деление на 256) вместо деления на 255. Кроме того, при таком расчёте получается, что 128, а не 127.5 - это полупрозрачность, удобно.
Да, небольшая погрешность, можно исправить ценой небольшой потери производительности.
Второй вопрос - это альфаканал. Сейчас сделано, что операция вообще не затрагивает альфаканал приёмника, в старых версиях он портился.
А какого действия ждёшь ты? Переноса альфаканала источника в приёмник? Даже в тех местах, где альфа = 0, то есть цвет не переносится вообще? Довольно странно.
Может такого же альфаналожения альфаканал на альфаканал, как и происходит с другими цветовыми каналами? А какой практический смысл у этого?
Хочется идей, что вообще должно происходить с альфаканалом.

Страницы: 116 17 18 19 20 21 Следующая »
Вело-изобретателиФорумSR2D - софтовый 2D движок