ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
средствами SDL IMNSHO невозможно. возможно пихать все сэмплы в буфер, имея 2 своих курсора -- записанных данных и отданных данных, и по SDL-ному коллбэку, запрашивающему дозу сэмплов, эту дозу отдавать. в zemu такая штука с SDL в целом работала.
но вообще практика показывает, что звуковая подсистема в гейм-ориентированных либах все-в-одном типа SDL и Allegro фигово подходит для эмуляторских нужд -- все слишком зависит от ОС/драйвера, и в половине или больше случаев приходится выбирать между треском и лагом. IMHO от portaudio должно быть больше толку.
а как отресайзить картинку в SDL?
Ajax16384 сделал с помощью Blit:
но это тормозит жутко, и картинка почемуто кривая получается (см. в аттачменте)...Код:_surface.Lock(); try { DrawFrame(_surface.Pixels); } finally { _surface.Unlock(); } using(Surface stretch = _surface.CreateScaledSurface(_zoomX, _zoomY, _antiAlias)) Video.Screen.Blit(stretch); Video.Update();![]()
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
на каждый кадр такое делается? тогда должно тормозить -- создание surface'а тяжелая штука, лучше один раз создать, а потом пихать туда всякое.
вообще, фз что эта CreateScaledSurface делает, это SdlDotNet'овский метод, не родной, и внятной документации по нему нет. судя про тому, что zoom'ы в этом методе double, оно масштабирует произвольно, а не в целое число раз (вот и еще тормоза). неужто кому-то в эмуле нужно так масштабировать? О__о
ИМХО лучше свою процедуру масштабирования написать (в SDL нету средств для ресайзов/вращений/эффектов/тп, но это можно сделать самому, залочив surface, и делая с графическими данными что угодно)
Последний раз редактировалось boo_boo; 18.04.2008 в 05:54.
У меня нормально ресайзить получалось. Но режим плоскости- 32 бита
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Код:void GfxControl::putBuffer() { if (scrdepth != 4) { if (scrwidth == W_WIDTH) SDL_BlitSurface(pTmpSurf, NULL, pDstSurf, NULL); else SDL_SoftStretch(pTmpSurf, NULL, pDstSurf, NULL); } else if (scrwidth != W_WIDTH) SDL_SoftStretch(pSrcSurf, NULL, pDstSurf, NULL); SDL_Flip(pDstSurf); }
а зачем в последнем билде снова включена принудительная фильтрация картинки? приходится её выключать через /AA-
IT FOUND A VOICE... NOW IT NEEDS A BODY
Последний раз редактировалось ZXMAK; 19.04.2008 в 22:12.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)