⇨ MENU ⇨ BIBLIOTHEQUE ⇨ box2dlib.bbc
PROC_gfxRender()
⇨ MENU ⇨ BIBLIOTHEQUE ⇨ box2dlib.bbc
PROC_gfxRender()
DESCRIPTION.
La procédure PROC_gfxRender() place et gère les mise à jour des représentations des corps d'un monde physique Box2d.
SYNTAXE.
PROC_gfxRender( DCT_Init{} , monde )
REMARQUES.
DCT_Init{} est l'identifiant de la structure de données qui sera créée et retournée par la procédure PROC_gfxInit().
monde doit être l'identifiant de la variable ayant reçu la valeur retournée par l'appel de la fonction FN_b2CreateWorld() et qui indique donc le monde physique dans lequel évoluent les corps.
La procédure PROC_gfxRender() dessine tous les corps physiques d’un monde Box2D sur l’écran en utilisant les images associées à chaque corps. La procédure PROC_gfxRender() va parcourir la liste des corps toujours présents dans monde. Pour chaque de ces corps, elle récupère son “User Data” avec un appel de la fonction FN_b2UserDataBody() du module box2dlib.bbc, qui doit contenir la référence un objet image créé avec la procédure PROC_gfxLoad(), et appliquer les transformations du corps (position + rotation)
Rappel : la procédure PROC_gfxInit() devra toujours être appelée avant tout autre fonction ou procédure de box2dgfx.bbc.
Voir le module box2dlib.bbc qui permet de créer des mondes Box2d et de gérer les corps et collisions dans ces mondes.
La procédure PROC_gfxBlit() est importée depuis le module box2dgfx.bbc.
RUBRIQUES.
Les dessins et les graphismes pour plus de détails sur la création de dessins et de graphismes.
La gestion des couleurs pour plus de détails sur la gestion des couleurs logiques et physiques.
EXEMPLE.
REM --- Importation des modules ---
REM --- Module de la bibliothèque BBC BASIC ---
INSTALL @lib$ + "box2dlib.bbc"
INSTALL @lib$ + "box2dgfx.bbc"
REM --- INITIALISATION GENERALE ---
VDU 23 , 22 , 640 ; 480 ; 8 , 16 , 16 , 0 : REM mode graphique SDL 640x480
GCOL 0 , 2
REM --- Initialisation et création du monde ---
PROC_b2Init
kmonde = FN_b2CreateWorld( 0 , 9.81 ) : REM - créer un monde
kcorps = FN_b2DynamicBody( kmonde , 5 , 5 , 0 , 0 , 0 , 0 , 0 , 0 ) : REM - créer un corps dans le monde
kforme = FN_b2BoxFixture( kcorps , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 1 ) : REM - associer une forme rectangulaire au corps
PROC_b2SetBody( kcorps , 5 , 1 , 0 ) : REM - place le corps dans le monde
REM --- Initialisation du rendu graphique ---
PROC_gfxInit( DCT_Context{} , 640 , 480 , 30 )
PROC_gfxLoad( DCT_Corps{} , "monfichier.jpg" , 30 )
PROC_b2UserDataBody( kcorps , DCT_Corps{}.t%% )
REM --- Boucle d'animation du corps dans le monde ---
REM --- Initialisation des donnees de la mise à jour ---
PROC_b2WorldStep( kmonde , 0.017 , 8 , 3 ) : REM - met à jour le monde de 1/60=0,017 de seconde
PROC_b2GetBody( kcorps , kabscisse , kordonnee , kangle ) : REM - retourné la position et l'inclinaison du corps
PROC_b2GetVelocity( kcorps , khorizontal , kvertical , krotation ): REM - retourné les vitesses du corps
PROC_gfxRender( DCT_Context{} , kmonde )
INPUT "Appuyer sur Entrée pour arreter ... " , kpause
REM --- Fin du programme ---
PROC_gfxExit
PROC_b2Exit
END
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.