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

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

Страницы: 1 2 Следующая »
#0
(Правка: 9:17) 9:14, 5 сен. 2019

Делаю x64 версию SR2D.
Тестовая версия, пример использования на vb.net: https://yadi.sk/d/ejnc7Q-iPJyYkA
В этой версии быстродействие многих функций будет ниже, чем в x86 версии, так как убраны ассемблерные вставки и даже интринсики, цель - отладить корректность алгоритмов и взаимодействия dll с основной программой. Оптимизации - потом.
В тестовом примере демонстрируется работа DPBM, но переведены все функции, можно проверять.
Есть изменение - Blend теперь не один из операторов наложения функцией Draw или MaskDraw, а независимая функция, это позволило сделать BlendFactor аргументом функции, а не свойством спрайта-источника, что позволяет использовать один источник в разных потоках с разным BlendFactor, ранее при многопоточности было ограничение на разные значения BlendFactor.

#1
(Правка: 19:47) 19:47, 5 сен. 2019

Запустил Release x64:
1 тест - 2307 fps
2 тест - 423 fps

#2
19:56, 5 сен. 2019

Благодарю.
Судя по цифрам - хороший процессор :)
Поясню - это тест, скорее, для пользователей SR2D, пример того, как и какие модули подключать. Предполагается изменять код под свои нужды, спрашивать меня, если что-то не получается, сообщать об ошибках.

#3
20:30, 5 сен. 2019

Мне интересно, т.к. я пишу аналогичную софтверную библиотеку, только 3D.
Тут можно посмотреть: https://yadi.sk/d/_xQTkQ1bwJzq8A

Mikle
> Судя по цифрам - хороший процессор :)
>
Обычный Broadwell-E Intel(R) Core(TM) i7-6950X CPU @ 3.00GHz
Весьма тормозной кстати.

#4
(Правка: 22:33) 22:11, 5 сен. 2019

у меня ~1960 в первом и ~395 во втором
это ризен 2700х
если не теребонькать мышку

ps
проверил последний билд.
клеар не прерывает, больше, исполнение, если запущен на 2ом фреймворке

#5
21:15, 8 сен. 2019

Mikle
у меня немного тупой вопрос
можешь объяснить аргументы clearrect?
pleft pright top bottom
я что-то туплю, не могу увидеть логики

#6
21:25, 8 сен. 2019

pleft pright top bottom - левый, правый, верхний, нижний - координаты ректа для очистки. Всё просто, вроде бы.

#7
(Правка: 21:33) 21:27, 8 сен. 2019

я наверное перегорел уже, не могу реально вдуплить

я жду от квадрата, левый верхний угол и нижний правый
а тут получается, левый првый и верхний нижний

т.е нужно указывать левый потом правый, потом верхний, потом нижний, что-ли, откуда такой разброс?)

Вроде получил нужный результат, но так и не понял почему координаты так разбиты, по какому принципу. Я конечно могу аргументы пересортировать, как мне удобнее, или в конструкторе писать в том порядке в каком хочу, такая фича вроде есть, но тем не менее интересно почему именно так разбито?

#8
22:12, 8 сен. 2019

SilentPrayerCG
> могу аргументы пересортировать
Пересортируй, я просто не обращал внимания даже, с таким набором всего одна функция.

#9
(Правка: 19:46) 19:45, 13 сен. 2019

Mikle
tiledraw кажется не рисует ничего если опустить опциональные аргументы

т.е
        backgr.TileDraw(BackTile, 0, 0, ObstacleMap.Width, ObstacleMap.Height) вот так черный экран
        backgr.TileDraw(BackTile, 0, 0, ObstacleMap.Width, ObstacleMap.Height, 0, 0, Op.Paint) - вот так рисует нормально

#10
(Правка: 10:10) 8:39, 14 сен. 2019

SilentPrayerCG
А чему равен Op спрайта backgr? Может там недопустимое значение?
Ведь в примере DPBM такая строка есть и работает, только там вместо "ObstacleMap.Width, ObstacleMap.Height" стоят конкретные величины "512, 512".

#11
(Правка: 13:35) 13:21, 14 сен. 2019

Mikle
ну он дефолтный по-идее, я специально не задавал
        Dim backgr As New Sprite(overlaysprite.Width, overlaysprite.Height)

попробовал вот так

        Dim back As New Sprite(1024, 768, Op.Paint)
        Dim tile As New Sprite("BackLight.png")
        back.TileDraw(tile, 0, 0, 1024, 768)
        back.PaintToDevice(hDC)
черный холст  ↑
        Dim back As New Sprite(1024, 768, Op.Paint)
        Dim tile As New Sprite("BackLight.png")
        back.TileDraw(tile, 0, 0, 1024, 768, 0, 0, Op.DefaultOp)
        back.PaintToDevice(hDC)
вот так черный тоже ↑
        Dim back As New Sprite(1024, 768, Op.Paint)
        Dim tile As New Sprite("BackLight.png")
        back.TileDraw(tile, 0, 0, 1024, 768, 0, 0, Op.Paint)
        back.PaintToDevice(hDC)
и вот так рисует ↑ нормально, когда через имя файла объявляешь аргумента op я там не увидел

сейчас еще попробовал заресайзить спрайт, blabla new sprite(oldsprite, размер) и фигня полная на выход идет, полосы ступеньками

https://gamedev.ru/files/images/?id=141358

#12
(Правка: 8:32) 8:19, 15 сен. 2019

Я выше неверно спросил, важен Op спрайта-источника, то есть BackTile.

> Dim tile As New Sprite("BackLight.png")
Кажется, понятно. При загрузке из файла с альфаканалом Op по умолчанию становится AlphaBlend, а в BackLight.png, видимо, альфаканал есть, но чистый - равен нулю. То есть это неправильный файл, попробуй с помощью SaveToFile пересохранить его в 24-битном формате и проверить так.
SilentPrayerCG
> попробовал заресайзить спрайт, blabla new sprite(oldsprite, размер) и фигня
> полная на выход идет, полосы ступеньками
Проверил. У меня работает. Ты точно не пропускаешь никакие параметры? Правильный пример:

    SprNorm = New Sprite("wall_norm.jpg", , 320, 450)

#13
18:07, 15 сен. 2019

Mikle
с ресайзом, перепроверил, вроде нормально
кстати, по поводу ресайза хотел спросить, вроде что-то всплывало в прошлой теме об этом давно, нет ли ресайза по nearest neighbor?

по поводу тайла, загрузил bmp все равно чёрный квадрат, если опустить опциональные аргументы
в bmp то альфы точно нету

#14
(Правка: 18:54) 18:51, 15 сен. 2019

SilentPrayerCG
> bmp то альфы точно нету
bmp с альфой есть, вот jpg - точно нет.
Спрайту можно просто задать нужный Op:

  Spr.Op = Op.Paint

SilentPrayerCG
> нет ли ресайза по nearest neighbor?
То есть без фильтрации? Нет, не делал, а нужно?

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