Эмулятор пишется на чистом ассемблере, так что неудивительно, что способы вывода картинки не меняются с первых версий, слишком хлопотно кодить Direct3D на ассемблере, наверно.
Эмулятор пишется на чистом ассемблере, так что неудивительно, что способы вывода картинки не меняются с первых версий, слишком хлопотно кодить Direct3D на ассемблере, наверно.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Direct2D конечно красивую картинку и качественное сглаживание позволяет рисовать, но не поддерживается на WinXP.
На мой взгляд OpenGL сейчас оптимальнее всего, т.к. позволяет легче писать кроссплатформенный код, чтобы работал и под Linux.
А чисто для Win - Direct3D наиболее оптимален и поддерживается на WinXP.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
На мой взгляд WinXP осталась последней нормальной Win системой. Можно сказать - вершина развития Windows. Я все-же надеялся что MS сделает чтото подобное но более современное, без всякого мусора с маркетами и телеметриями и мусорными сервисами, но этого похоже уже не будет, поэтому перешел на Linux. И жалею что не сделал этого раньше.
Простой пример, если запустить на одном и том-же железе Crysis/Crysis Wars, то WinXP дает больше FPS и работает более плавно, без микрофризов как Win7 и более поздние. А это говорит об эффективности ядра и количестве мусора в коде системы.
Насчет быстрого рендерера вопрос спорный. Direct2D легко ставит любой современный GPU на колени (нет предела желанию улучшить качество картинки), поэтому быстрым его не назовёшь, но всю производительность съедает сглаживание, которое для эмулятора не очень-то и важно, т.к. пикселы большие и квадратные, межпиксельные детали просчитывать не нужно.
Для эмулятора векторная графика с высоким разрешением не нужна, а для обычной графики на моих тестах OpenGL заметно выигрывает в производительности, не уступая в качестве.
Есть правда нюансы, например не знаю как в OpenGL получить детальную информацию о положении луча развертки, есть подозрение что такой возможности просто нет. Поэтому сложнее подстраивать синхронизацию под луч.
Последний раз редактировалось ZXMAK; 08.03.2024 в 01:05.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Я ни коем случае не эксперт в open gl, но если я правильно понимаю то vsync платформа-зависимый код.
Вот тут описано как его включить для разных систем
https://www.khronos.org/opengl/wiki/Swap_Interval
я знаю и использую SwapInterval расширения, но речь шла не о включении vsync, а об отслеживании положения луча на дисплее. Т.е. способе запросить текущее положение луча в произвольный момент времени DirectX позволяет это сделать, а вот в OpenGL о такой возможности я не слышал.
В этом плане DirectX рулит, давая доступ ко всяким плюшкам железа, но OpenGL выигрывает своей кросс-платформеностью.
Последний раз редактировалось ZXMAK; 08.03.2024 в 02:58.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
SoftLight(08.03.2024)
Тут не соглашусь. Я после установки Вин11 просто не нарадуюсь)
- - - Добавлено - - -
Вполне возможно, что фризы идут из-за эмуляции старого директикса на новом. Об этом много писали на форумах.
- - - Добавлено - - -
По моим тестам обычное сглаживание по 4-м точкам вообще не забирает быстродействия. И масштабирование тоже. Я проводил замеры вывода графики в окно, и скорость вывода абсолютно не зависела от того, среднего размера окно, или же оно растянуто на весь экран, а точки промасштабированы и сглажены.
Кроме того, после того, как я пересел на Вин11, DirectDraw, который использовался в моем эмуляторе стал на столько медленно эмулироваться, что мне пришлось печально вздохнуть и выкинуть его. А уж если менять на что-то новое, то не на Direct3D старого поколения, а на нормальный Direct2D.
Кроме того, в WinXP нет WASAPI, и делать поддержку и WASAPI, и DirectSound - накладно.
Также в WinXP невозможно запросить у системы точную частоту кадров (дробную) развертки. Да и еще много чего.
кстате раз тут собрались любители васапе
где внятно почетать про коденг под оно?
чего надо инклудить?
и есть ли у оно какието системные dll-ки через которые оно работаит?
(ибо на ХРю его надо как то завозить/врапать)
а еще эти ваши новомодные перерисовки монитора по требованию
работают в оконном режиме?
Последний раз редактировалось NEO SPECTRUMAN; 08.03.2024 в 23:39.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)