Общество изобретателей велосипедов
GameDev.ru / Сообщества / Вело-изобретатели / Форум / 2D движок SR2D, Софтверный движок для работы с 2D графикой на VB6, vb.net, C# (3 стр)

2D движок SR2D, Софтверный движок для работы с 2D графикой на VB6, vb.net, C# (3 стр)

Поделиться

Страницы: 1 2 3 4 ... 16 ... 30 31 32 Следующая

MikleМодераторwww13 окт. 201010:55#30
sb3d
На Athlon64 X2 4800+:
моя: 40 fps , 5 fps
твоя: 35 fps , 3 fps
Но у тебя ещё текст выводится, это может немного тормозить.
sb3dУдалёнwww13 окт. 201011:38#31
Mikle
> Вот моя ф-ция:
ММХ полезны, оказывается. =)
Я то на асме вставок давно не делаю, у меня всё на с++, вероятно, это и есть причина тормозов.
Спасибо, разберу твой код на досуге!

> У тебя вывод на экран через DD?
В окне, как в этом тесте - StretchDIBits, функция ГДИ.

igoЗабаненwww13 окт. 201013:04#32
sb3d:

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

Правка: 13 окт. 2010 13:07

igoЗабаненwww13 окт. 201016:12#33
напишите ваше разрешение окна...
MikleМодераторwww13 окт. 201017:04#34
Окно 800*600, 1000 (или 10000) спрайтов 64*64,
igoЗабаненwww13 окт. 201017:35#35
http://www.nemehanika.ru/cg/download/test.zip

и правда... что-то, куда-то  упирается...
несколько побыстрее чем у sb3d и чуть медленнее чем у Mikle, однако если спрайтов 100 у меня быстрее получается почти в полтора раза... 290 против 200... на Athlon 64... интересно как оно себя на Core 2 Duo поведет... компилятор у меня обычный, потому что интеловский атлонов - не любит...
альфа конечно - значительно влияет, например режимы сложения, вычитания - раза в полтора дешевле обходятся (предполагается, что там нет альфы - ее черный цвет олицетворяет)...

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

забавно... теперь вижу шо к Интелю у меня код - не дружественный... 21 против 32 у Mikle
Чем компиляешь?... и через что блиттинг делаешь?

Правка: 13 окт. 2010 17:45

MikleМодераторwww13 окт. 201017:45#36
igo
> Чем компиляешь?... и через что блиттинг делаешь?
C++ 2008 Express. А не всё ли равно? Ведь там всё равно асм, я раньше пользовался PowerBasic - скорость была та же.
igo
> однако если спрайтов 100 у меня быстрее получается почти в полтора раза...
Что-то другое, вместо SetDIBitsToDevice? DD?
igoЗабаненwww13 окт. 201017:53#37
а... ну у меня тоже самое... странно что на Атлоне - у меня примерно тоже что и у тебя... а на Core Duo ноутном - значительная просадка...
да... все правильно, от компиля не должно так зависеть... у меня там тоже почти чистый асм... усе равно очень странно... пришли пустой проект, что б настройки глянуть... кроме как на разницу компиляции - пока и подумать не на что... или у тебя алгоритмы к интелевскому контролеру памяти - более добрые...

блитинг - BitBlt обычный... на 100 спрайтах, глянул внимательней даже не 290, а около 300 гуляет +-3...

Правка: 13 окт. 2010 18:08

MikleМодераторwww13 окт. 201018:04#38
igo
> блитинг - BitBlt обычный...
Странно, он вроде равен по скорости SetDIBitsToDevice.
Вечером домой приду - пришлю проект.
igoЗабаненwww13 окт. 201018:19#39
кой что проясняется... если спрайты не перемещать, а только отрисовывать, то там где было:
100: 300
1000: 36
10000: 4

становится:

100: 400
1000: 51
10000: 5

т.е. явно упирается в объем кэша... но не сказать, что такой уж фатальный перепад производительности... на уровне 25%...

тот же самый результат получается, если спрайты двигать, а размер окна уменьшить до 320х240...

усе... расслабься по блитингу, получилось, шо я сжульничал неумышленно)))... цифры пришли к твоим на 100 спрайтах...
перезакачал: http://www.nemehanika.ru/cg/download/test.zip

Правка: 13 окт. 2010 18:30

igoЗабаненwww13 окт. 201019:31#40
предлагаю тему вектора тоже трогать... вот тест: http://www.nemehanika.ru/cg/download/testv.zip

все тоже, круги 64 пикселя диаметром... с взаимодействием - add (put - тоже самое по скорости, у вектора нет разницы в отличии от спрайтов)

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

на векторах у меня усе наоборот если на Athlon 64 2.4:
260-280
68
8

то на достаточно слабеньком ноуте Core 2 Duo 1.2:
400-450
92-97
11

как будто у ноута - тормозней память, но в целом - быстрее процессор...

т.е. мне Mikle - пасиба, но видимо не нужны твои настойки, это явно в коде спрайтов что-то не то у меня - по отношению к Интелю... 

Правка: 13 окт. 2010 19:46

sb3dУдалёнwww13 окт. 201020:40#41
igo
> несколько побыстрее чем у sb3d и чуть медленнее чем у Mikle
Хех, не любят современные процы мой метод... Чёрти-что. =))

А у меня на Пентиуме четвёртом 2.5 Ггц:
Твой - 19 фпс
Мой - 26 фпс
Майкла - 25 фпс.
(цифры в посте 26 были при работающем радио на флэше, которое отнимало процессор, поэтому отличаются в меньшую сторону. Этот тест - при свободном процессоре.)

Кстати, рисование кружков у меня тоже есть. Правда, без сглаженных краёв. Будет время - набросаю демку.

ВадикПользовательwww13 окт. 201020:53#42
Как интереееесноооо всё ээтоо:) Как-то ко мне программирование не пришло в школьные годы,ща в VB копаюсь,надо книгу что-ли купить какую:)а то всё сам да сам...много я упустил...никак даже простенький двиг не напишу,чтобы приступать можно было бы к разработке...всё на бумаге...там я ас:)...а низкого уровня языков совсем не знаю...что-то я изливаюсь тут прямо.
  Здравствуйте SB3D,я вас на Gamin'е видел,нравится ваше графическое исполнение.

Правка: 13 окт. 2010 20:54

igoЗабаненwww13 окт. 201021:07#43
sb3d
да... да... усе правильно... почему то на интеле мои спрайты - тормозят... абыдна, поправлю как-нибудь... могу код выложить... может вы опытным взглядом поймете где я пролетел...
igoЗабаненwww13 окт. 201022:03#44
тест спрайты + вектор: http://www.nemehanika.ru/cg/download/testsv.zip

код вывода с альфой:

szl - фактическая ширина вывода (типа последствия клипинга - если помещается в "экране" - равна szx)
szx - действительная ширина спрайта
szy - сколько выводим строк
loffs - смещение между строками в приемнике, естественно - может быть отрицательным...

void DrawImage_PUTALPHA (dwRGB *dest, dwRGB *source, unsigned szl, unsigned szx, unsigned szy = 1, int loffs = DrawLOFFS) 
{
  _asm
      { pxor xmm2,xmm2
         mov edx,szx
         shl edx,2
         mov ecx,szl
         shl ecx,2
         sub ecx,edx
         mov szl,ecx
         mov esi,edx
         mov eax,source 
         mov ebx,dest
         mov edi,ebx
        _line:
         mov edx,esi
         mov ecx,esi               // выясняем скоко полных xmm слов        
         and ecx,0xfffffff8 
         jz _rem                      // нету полных
         add ecx,ebx        
        _loop: 
         movlps xmm0,[ebx]   // загружаем и считаем полными словами
         movlps xmm1,[eax]
         pshufd xmm4,xmm1,0x00 
         pshufd xmm5,xmm1,0x55
         psrld xmm4,24
         psrld xmm5,24
         packssdw xmm4,xmm5  
         punpcklbw xmm0,xmm2 
         punpcklbw xmm1,xmm2  
         psubw xmm1,xmm0  
         psllw xmm0,8     
         pmullw xmm1,xmm4 
         paddw xmm0,xmm1  
         psrlw xmm0,8     
         packuswb xmm0,xmm0
         movlps [ebx],xmm0  
         add ebx,8
         add eax,8
         cmp ecx,ebx
         jne _loop 
        _rem:
         and edx,0x07       // каков остаток?
         jz _ex                   // нет его
         add edx,ebx        
        _loopr:
         movd xmm0,[ebx]     // загружаем и считаем остаток
         movd xmm1,[eax]
         pshufd xmm4,xmm1,0
         psrld xmm4,24
         packssdw xmm4,xmm4
         punpcklbw xmm0,xmm2 
         punpcklbw xmm1,xmm2 
         psubw xmm1,xmm0   
         psllw xmm0,8      
         pmullw xmm1,xmm4  
         paddw xmm0,xmm1   
         psrlw xmm0,8      
         packuswb xmm0,xmm0
         movd [ebx],xmm0
         add ebx,4
         add eax,4
         cmp edx,ebx
         jne _loopr
        _ex:
         mov ebx,edi
         add ebx,loffs
         mov edi,ebx
         add eax,szl
         mov ecx,szy
         dec ecx
         mov szy,ecx
         jnz _line          
      };  
};

шо у меня тут такое, шо интелю могло не понравится? видно?... не?...

заморочился... и полными xmm-словами грузил, считал... потом недорезки... а оно тормозит на Интел, как ваще он смеет Атлону в sse проигрывать?)))...
код не выровненный на 128 для полных слов - это было выше моих сил)))... - не уж-то оно так влияет... получается тогда Athlon-у - это почти пофиг...

Правка: 13 окт. 2010 22:07

Страницы: 1 2 3 4 ... 16 ... 30 31 32 Следующая

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

2001—2017 © GameDev.ru — Разработка игр