Что такое аппаратный курсор и как он работает? - PullRequest
23 голосов
/ 05 августа 2011

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

РЕДАКТИРОВАТЬ: Для тех, кто может быть заинтересован в этом в будущем, я только что реализовал то, что необходимо, чтобы показать курсор с оборудованием.Реализация была в ядре, и для ее использования было достаточно простого ioctl.Работает отлично.

Ответы [ 3 ]

31 голосов
/ 05 августа 2011

Аппаратный курсор означает, что графический процессор обеспечивает рисование (небольшого) изображения наложения поверх кадрового буфера, положение которого можно изменить двумя регистрами (или около того) на графическом процессоре.Таким образом, перемещение по указателю не требует перерисовки частей буфера кадров, которые были ранее заблокированы.

Отношение к OpenGL: Нет!

8 голосов
/ 05 августа 2011

Аппаратный курсор не отображается или не поддерживается OpenGL.Некоторый небольшой аппаратный элемент накладывается на него на любом изображении, выходящем из разъема дисплея - он вставляется непосредственно в поток битов при сканировании каждого кадра.Из-за этого его можно перемещать, изменяя пару аппаратных регистров, содержащих его координаты.В старые времена их называли спрайтами, и в разных системах их поддерживали разное количество.

5 голосов
/ 18 января 2014

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

Программные курсоры, визуализируемые вами как спрайт экранного пространства во время цикла рендеринга, должны работать со скоростью вашего игрового движка. Таким образом, если ваша игра испытывает отставание или иным образом падает ниже целевого fps, задержка курсора будет ухудшаться. Незначительное падение игровых fps обычно допустимо, но незначительное падение задержки курсора очень заметно как «медленный курсор».

Вы можете легко проверить это, визуализируя программный курсор, оставляя аппаратный курсор включенным. (К сведению, в Windows API функция курсора hw - ShowCursor). Вы обнаружите, что программный курсор отстает от аппаратного курсора.

...