TalismanChet
@TalismanChet
Лицо зла

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
Productivity Inside Новосибирск
от 60 000 до 100 000 ₽
ЛАНИТ Москва
До 200 000 ₽
ЛАНИТ Санкт-Петербург
До 140 000 ₽
29 мар. 2024, в 16:38
5000 руб./за проект
29 мар. 2024, в 16:25
7000 руб./за проект
29 мар. 2024, в 16:22
30000 руб./за проект