Re: Le concept de 'ScreenGadget'
Publié : mer. 02/sept./2015 16:55
Je veux en venir, au moins à ce qui est déjà écrit, à savoir disposer d'un code simple pour se retrouver pleinement dans un environnement graphique adéquate à l'OS hôte. Je recopie l'exemple proche de l'en-tête du sujet, et je le commente:
@Falsam
Avec de telles fonctions natives, on aurait vraiment la simplicité et la fiabilité réunies, dès le départ.
Alors peut-être que tu restes un peu sur ta faim avec le pointeur *StandBy qui se cache en une option falcultative.
Je peux préciser. Si l'on quitte un jeu/logiciel plein écran, la 1ère chose qui prend une baffe, après l'instabilité de l'affichage, c'est l'horloge virtuelle que l'on aura mis en place et qui s'étalonne à chaque boucle d'affichage graphique. S'il n'y a plus de charge d'affichage, il y a un 'delta de sortie' et un 'delta d'entrée' de notre tâche plein écran.
Il y a donc au moins une correction d'horloge à effectuer. Et, autant faire ce correctif pendant une période 'lente' (quand le plein écran a été interrompu) une bonne fois pour toute, plutôt que d'aller adapter l'horloge en la complexifiant inutilement au sein même de la boucle principale dont la vélocité doit rester proche de l'absolu (zéro procédure, factorisation des variables, etc... etc...).
Voilà aussi donc pour ce pointeur.
Code : Tout sélectionner
InitSprite() ; Initialise l'accélération matérielle vidéo
OnFullScreen("test") ; Ouvre la zone graphique plein écran
InitKeyboard() ; Initialise le clavier
Repeat ; Début de boucle principale
ClearScreen(0) ; Partie graphique (ici: simple écran noir)
Delay(16) ; Partage des ressources CPU avec les autres tâche de l'OS
FlipBuffers() ; Affichage
If IsScreenActive() = 0 ; Echec de l'affichage?
FullScreenResume("TEST") ; Oui, offrons la main à l'OS...
EndIf ;...car il devait en avoir besoin
ExamineKeyboard() ; Interroge le clavier
Until KeyboardPushed(#PB_Key_Escape) ; Rebelote en début de boucle sauf si touche [Echap]
End ; Dans, ce cas, quitte le programme.
Avec de telles fonctions natives, on aurait vraiment la simplicité et la fiabilité réunies, dès le départ.
Alors peut-être que tu restes un peu sur ta faim avec le pointeur *StandBy qui se cache en une option falcultative.
Je peux préciser. Si l'on quitte un jeu/logiciel plein écran, la 1ère chose qui prend une baffe, après l'instabilité de l'affichage, c'est l'horloge virtuelle que l'on aura mis en place et qui s'étalonne à chaque boucle d'affichage graphique. S'il n'y a plus de charge d'affichage, il y a un 'delta de sortie' et un 'delta d'entrée' de notre tâche plein écran.
Il y a donc au moins une correction d'horloge à effectuer. Et, autant faire ce correctif pendant une période 'lente' (quand le plein écran a été interrompu) une bonne fois pour toute, plutôt que d'aller adapter l'horloge en la complexifiant inutilement au sein même de la boucle principale dont la vélocité doit rester proche de l'absolu (zéro procédure, factorisation des variables, etc... etc...).
Voilà aussi donc pour ce pointeur.