opengl graphics cursor hardware-acceleration

opengl - ¿Qué es el cursor de hardware y cómo funciona?



graphics hardware-acceleration (3)

¿Hay alguien que pueda explicar cómo funciona el cursor de hardware con precisión? ¿Cómo se relaciona con los gráficos que estoy dibujando en la pantalla? Estoy usando OpenGL para dibujar, ¿cómo se relaciona el cursor de hardware con los gráficos OpenGL?

EDITAR: Para aquellos que puedan estar interesados ​​en esto en el futuro, simplemente implementé lo que se necesita para mostrar el cursor con el hardware. La implementación estaba en el kernel y para usarla era suficiente con ioctl''s. Funciona perfectamente.


El cursor de hardware no está representado o no es compatible con OpenGL. Algunas piezas pequeñas de hardware lo superponen en cualquier imagen que salga del conector de la pantalla: se inserta directamente en el flujo de bits al escanear cada fotograma. Debido a eso, se puede mover cambiando un par de registros de hardware que contienen sus coordenadas. En los viejos tiempos, estos se llamaban sprites y varios de ellos eran compatibles con diferentes sistemas.


Los cursores de hardware tienen menos latencia y, por lo tanto, proporcionan una mejor experiencia, ya que no están vinculados a la velocidad de fotogramas del juego o del motor, sino a la frecuencia de actualización de la pantalla.

Sin embargo, los cursores de software, representados por usted como un sprite de espacio de pantalla durante su bucle de procesamiento, deben ejecutarse a la velocidad de su motor de juego. Por lo tanto, si su juego experimenta un retraso o cae de otro modo por debajo de los fps objetivo, la latencia del cursor empeorará. Una caída menor en los fps del juego es generalmente aceptable, pero una disminución menor en la latencia del cursor es muy notable como un "cursor lento".

Puede probar esto fácilmente renderizando un cursor de software mientras deja encendido el cursor de hardware. (Para su información, en la API de Windows la función del cursor hw es ShowCursor). Encontrarás que el cursor del software se encuentra detrás del cursor del hardware.


Cursor de hardware significa que la GPU proporciona para dibujar una imagen superpuesta (pequeña) sobre el búfer de marco de la pantalla, cuya posición puede cambiarse mediante dos registros (o algo así) en la GPU. Por lo tanto, mover el puntero no requiere volver a dibujar las partes del framebuffer que anteriormente estaban obstruidas.

Relación con OpenGL: ¡Ninguno!