Optimisations; Écriture Dans Les Couche Cachées; Utilisation De Bitmap - Yoctopuce Yocto-MaxiDisplay Mode D'emploi

Module électronique
Table des Matières

Publicité

3. Principes de fonctionnement

3.8. Optimisations

Le Yocto-MaxiDisplay a beau disposer de son propre processeur et proposer de nombreuses
routines graphiques, il reste néanmoins un système relativement lent comparé à un système
d'affichage classique. Cette lenteur est essentiellement due au protocole HID utilisé pour que le
Yocto-MaxiDisplay puisse être piloté sans drivers. Le taux de transfert entre l'écran et l'ordinateur est
limité à 64Ko par seconde. Chaque requête prends environ 3 ms. Il existe cependant des techniques
pour optimiser l'affichage.
Écriture dans les couche cachées
Les actions à effectuer sur couches visibles sont envoyées immédiatement à l'écran afin d'être
exécutée au plus vite, en revanche les actions à effectuer sur les couches cachées sont bufferisées,
permettant ainsi d'envoyer plusieurs commandes d'un coup. Il est donc beaucoup plus efficace
d'écrire dans une couche cachée et de la rendre visible après coup, ce qui rend le double buffering
très intéressant.
Double buffering
La technique appelée double buffering permet d'afficher des animations sans que les artefacts lié à
la construction des graphismes ne soient visibles. Elle consiste à travailler sur deux couches, une
visible et une seconde cachée. Les images sont construites dans la couche invisible et à la fin de
chaque construction, le contenu des deux couches est permuté. Vous trouverez dans les librairies un
4
exemple
utilisant cette technique pour animer un flocon de Von Koch.

Utilisation de bitmap

A partir d'une certaine complexité graphique, il sera plus probablement plus efficace de calculer un
bitmap directement sur la machine hôte et de l'envoyer à l'écran. Pour cela il suffit d'utiliser la
fonction drawBitmap. Les données d'un bitmap sont encodées dans un tableau de bytes, lignes par
lignes en partant du coin supérieur gauche. Dans chaque byte, le bit de point le plus fort représente
le pixel le plus à gauche. Vous trouverez dans les librairies un exemple
Mandelbrot basé sur ce principe.
Voici le code en C permettant de dessiner un pixel aux coordonnées (x,y) dans un tableau de bytes
représentant un bitmap de w x h
void putpixel(unsigned char *data, int x, int y)
{
int bytesPerLine = (w + 7) >> 3;
data[ (x >> 3) + (y * bytesPerLine) ] |= 128 >> (x & 7);
}
4
Prog-Display-DoubleBuffering
5
Prog-Display-DrawBitmap
16
5
calculant un ensemble de
www.yoctopuce.com

Publicité

Table des Matières
loading

Ce manuel est également adapté pour:

Yocto-displayYocto-color-v2

Table des Matières