TalismanChet
@TalismanChet
Лицо зла

Как увеличить FPS в системе?

Я пишу ОС под все платформы, сейчас - под х86-16. Я работал над поддержкой какой-никакой графики (для меня это просто лес), реализовал двойную буфферизацию, поддержку мыши и простейшие примитивы (прямоугольник, закрашенный прямоугольник, курсор, окно). Как по тбыкновению, возникает проблема: фреймрейт чрезвычайно низкий, даже просто водить курсором - уже некомфортно. Для копирования из временного буффера в видимый, я использовал инструкцию rep movsd, хоть и знаю, что до i286 включительно такой инструкции нет. Вопрос: как повысить число кадров в секунду? предпочтительнее использовать rep movsw, но это не обязательное ограничение, главное, чтобы на i386 завелось.

Архив с кодом
  • Вопрос задан
  • 231 просмотр
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как увеличить FPS в системе?

Ты уже задавал этот вопрос в комментариях к предыдущему вопросу, там есть ответ:

Основной способ стандартный -- не перерисовывать всё, если можно этого избежать.

Нет нужды перерисовывать весь интерфейс в бэк-буфере, если ничего не изменилось кроме положения мыши. Указатель мыши вообще можно рисовать прямо во фрейм-буфере, когда он перемещается копировать маленький квадратик из бэк-буфера и рисовать стрелку в новом месте.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Для копирования из временного буффера в видимый, я использовал инструкцию rep movsd, хоть и знаю, что до i286 включительно такой инструкции нет. Вопрос: как повысить число кадров в секунду?

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

Найди себе сверх-точные часы которые меряют наносекунды (ты-же ассемблерщик?) Померяй сколько занимает rep movsd. Меряй не один раз а хотя-б много итераций и бери среднее. Может быть не в этом твоя проблема с fps, а где-то в другом коде.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы