жаль что старые версии моего движка слишком уж старые - успел привыкнуть к последней версии так что придётся основательно покопаться основательно чтобы вытащить старые версии и проверить наличие глюка - пороюсь на флэшках где-то была промежуточная версия. Если найду то отпишусь о результате сравнительной проверки.
нашёл проверил хм хм хм вроде в старой версии всё работает, страаанно однако - ладно ухожу в туман медитировать над листингами (ещё вопрос над какими - ну всё всё уже растаял)
Neirapik
> sr2d я не обновлял с год где-то
Я x86 версию не обновлял несколько лет уже.
я дополнения пишу в sr2d
сейчас точно не вспомню но я добавлял ускорение закраски (до 50% сокращает время за счёт закраски одной командой 4-х пикселей), добавил рект закраску с входными значениями границ закраски чтобы не менялся ранее установленный сетлокрект, ну и добавил упрощённую полупрозрачную заливку плюс вертикальные и горизонтальные линии отдельным асм блоком отрабатываются прямым перебором заданого колва пикселей что гораздо быстрее и актуально для меня так как я часто активный интерфейс в реальном времени использую и он привязан к разным динамичным данным и тут скорость прорисовки весьма актуальна и на практике мне удалось с экраном 1920 на 1080 с полной четырёхкратной заливкой включая полупрозрачную (накладываются текущая нейроматрица + графики из нескольких тысяч линий и куча текста из моего модуля шрифтов) и всё это менее чем за милисекунду
спс за sr2d
и да забыл добавить что это всё в 3д пространстве для возможности масштабирования так как рабочее пространство гораздо больше рабочего стола то на экран проецируется вид из плавающей точки что позволяет расматривать структуры и графики как захочется в сочетании с доп интерфейсом всплывающем в узлах при приближении или по вызову
P.S. всё закругляюсь а то закручу тут флуд
Mikle
Привет, напомни, я что-то опять забыл, DrawRotate без альфы рисуется, или я какой-то момент упускаю?
Вот сейчас понадобилось, и я опять вспомнить не могу, вроде крутил с альфой раньше. В аргументах не вижу что-то оп.
Т.е. если у спрайта сорса есть альфа, то при рисовании с ротейтром она игнорится у меня.
SilentPrayerCG
DrawRotate рисует всё вместе с альфой как 4 независимых канала, для альфаналожения нужно сначала выполнять DrawRotate во временный спрайт, а потом временный спрайт на приёмник отображать с помощью Draw с OpAlphaBlend.
Привет! (снова). Отчитаюсь о результате - переписал свои дополнения для sr2d в инструкции sse и глюк пропал (хорошо что так сделал до переделки движка)
в общем удачи и спасибо за внимание! возращаюсь дальше работать. (правда все выходные на суматоху потратил - уж лучше эту суматоху в кино смотреть)
Mikle
ну у меня в итоге альфа получалась в том месте где за счет поворота было пустое место, а вот в том месте где изначально в спрайте была альфа нет. т.е если в спрайте круг, то рисуется один фиг крутящийся квадрат.
так как мне нужно было круг делать, я в итоге сделал отдельно маску, крутил свой спрайт и потом копировал маску из спрайта в альфу, и потом уже рисовал
SilentPrayerCG
> в итоге альфа получалась в том месте где за счет поворота было пустое место, а
> вот в том месте где изначально в спрайте была альфа нет. т.е если в спрайте
> круг, то рисуется один фиг крутящийся квадрат.
Вот я по-быстрому сделал пример на x64 версии, всё нормально работает: https://yadi.sk/d/YUCRKXxAVdDysg
Mikle
Спасибо, гляну.
Вроде-бы получилось повторить.
Получается DrawRotate на спрайт переносит всё, и цвет и альфу? Ну т.е замещает данные "холста", а не смешивает с ними?
Переписал то, что сегодня делал, без копирования маски в альфу, работает, но вот не могу понять почему такая окантовка получается
Спрайт скейлится, но и скейлилась, до этого, маска черно-белая, которую я копировал и окантовки не было.
https://gamedev.ru/files/images/?id=142657
единственное, что мне на ум приходит, это то что там была полная текстура, ну весь квадрат был, и маской лучше вот это смешивание происходит, а когда в фотошопе уже отрезано, там белый цвет в этом месте антиалиасинга, каёмки этой и он криво смешивается, видимо из-за этого...
ps
когда применил все это дело на анизотропию в максе, полезли швы, т.е для ротейта на анизотропию не катит вообще подобное скейлить, нужен неарест нейбор
Mikle
Я уже спрашивал) - еще раз спрошу, это сложно опцию сделать что-бы ресайз без фильтрации был?
Если это гимор и ждать не стоит, я через графикс просто сделаю.
SilentPrayerCG
> DrawRotate на спрайт переносит всё, и цвет и альфу? Ну т.е замещает данные
> "холста", а не смешивает с ними?
Да.
SilentPrayerCG
> это сложно опцию сделать что-бы ресайз без фильтрации был?
Не сложно. Постараюсь в ближайшее время.
SilentPrayerCG
> не могу понять почему такая окантовка получается
Попробуй перед DrawRotate очищать временный спрайт цветом с нулевой альфой. В моём примере этого нет потому, что спрайт вращается всегда на небольшой угол, старый спрайт всегда затирается новым.
Mikle
Понял о чем ты, типа друг на друга аккумулируются, но по-идее я каждый раз заново спрайт создаю, потому что каждый раз новый размер нужен
вот код
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim Canvas As New Sprite(2048, 2048) Dim brush As New Sprite("T:\MASKS\_BrushedRadial.png") Dim brush_rotated As Sprite Dim brush_resized As Sprite Dim R As New Random Dim x, y, s As Integer Dim a As Single For n = 0 To 10000 a = R.Next(360) + R.NextDouble s = R.Next(200, 300) brush_resized = New Sprite(brush, Transform.None, s, s) brush_rotated = New Sprite(s, s) brush_rotated.DrawRotate(brush_resized, s * 0.5, s * 0.5, s * 0.5, s * 0.5, a, True) x = R.Next(2048) y = R.Next(2048) Canvas.Draw(brush_rotated, x, y, Op.AlphaBlend) Next Canvas.SaveToFile("r:\mask_big.png", Imaging.ImageFormat.Png) End Sub
SilentPrayerCG
Я понял, виноват спрайт _BrushedRadial.png, попробуй мой вариант: