⇨ MENU ⇨ BIBLIOTHEQUE ⇨ ogllib.bbc
PROC_render()
⇨ MENU ⇨ BIBLIOTHEQUE ⇨ ogllib.bbc
PROC_render()
DESCRIPTION.
La procédure PROC_render() affiche une vue 2D du monde 3D à l'écran.
SYNTAXE.
PROC_render( ... )
REMARQUES.
Les notes suivantes sont une traduction, mise en forme, de la documentation officielle proposée par R.T. RUSSELL.
La procédure PROC_render() attend 24 paramètres.
pdev%, la valeur renvoyée par FN_initgl.
bcol%, la couleur de fond (&FFrrggbb).
nlight%, nombre de lumières. Indiquez zéro si l'éclairage n'est pas utilisé.
light%(), un tableau de pointeurs ajustés vers des structures légères (voir note 1).
nobj%, le nombre d'objets (c.-à-d. de tampons de sommets).
mat%(), un tableau de pointeurs ajustés vers des structures matérielles (voir note 2).
tex%(), un tableau de pointeurs de texture (par exemple renvoyé par FN_loadtexture ).
vbuf%(), un tableau de pointeurs de tampon de sommets (par exemple renvoyé par FN_load3d ).
vnum%(), uun tableau de comptages de sommets (par exemple renvoyé par FN_load3d ).
vfmt%(), un tableau de codes de format de sommet (par exemple renvoyé par FN_load3d ).
vsize%(), un tableau de tailles de sommets (par exemple renvoyé par FN_load3d ).
yaw(), un ensemble d' angles de lacet (rotations autour de l'axe Y).
pitch(), un ensemble d' angles de tangage (rotations autour de l'axe X).
yaw(), un ensemble d' angles de roulis (rotations autour de l'axe Z).
X(), un tableau de translations le long de l'axe X.
Y(), un tableau de translations le long de l'axe Y.
Z(), un ensemble de translations le long de l'axe Z.
eye(), un tableau eye(0), eye(1), eye(2) contenant les coordonnées XYZ de l'œil ou de la caméra.
look(), un tableau look(0), look(1), look(2) contenant les coordonnées XYZ d'un point sur la ligne de visée.
fov, le champ de vision vertical en radians (équivalent au zoom de la caméra).
ar, le rapport hauteur/largeur de la fenêtre graphique 3D.
zn, la distance entre la caméra et le plan proche (les objets plus proches que ce plan sont invisibles).
zf, la distance entre la caméra et le plan éloigné (les objets plus éloignés que cette distance sont invisibles).
roll, l'angle de roulis de la caméra (en radians).
Une source de lumière peut être créée comme suit. Le champ Type% vaut :
- 1 pour une source de lumière ponctuelle (la direction est ignorée) ;
- 2 pour un projecteur (la position et la direction sont toutes deux importantes) et ;
- 3 pour une lumière directionnelle (la position est ignorée : la lumière est considérée comme étant « à l’infini »).
DIM light{ Type% , Diffuse{ r% , g% , b% , a% } , Specular{ r% , g% , b% , a% } , \
\ Ambient{ r% , g% , b% , a% } , Position{ x% , y% , z% } , Direction{ x% , y% , z% } , \
\ Range% , Falloff% , Attenuation0% , Attenuation1% , Attenuation2% , \
\ Theta%, Phi% }
light%( 0 ) = light{} - PAGE + !340
light.Type% = 2 : REM spotlight
light.Diffuse.r% = FN_f4( 1 ) : REM - composant rouge de la couleur diffuse
light.Diffuse.g% = FN_f4( 1 ) : REM - composant vert de la couleur diffuse
light.Diffuse.b% = FN_f4( 0 ) : REM - composant bleu de la couleur diffuse
light.Specular.r% = FN_f4( 1 ) : REM - composant rouge de la couleur spectale
light.Specular.g% = FN_f4( 1 ) : REM - composant vert de la couleur spectale
light.Specular.b% = FN_f4( 0 ) : REM - composant bleu de la couleur spectale
light.Position.x% = FN_f4( 0 ) : REM - abscisse de la position
light.Position.y% = FN_f4( 0.3 ) : REM - ordonnee de la position
light.Position.z% = FN_f4( 0.7 ) : REM - profondeur de la position
light.Direction.x% = FN_f4( 0 ) : REM - abscisse de la direction
light.Direction.y% = FN_f4( 0 ) : REM - ordonnee de la direction
light.Direction.z% = FN_f4( 1 ) : REM - profondeur de la direction
light.Phi%= FN_f4( 1.4 ) : REM - angle du cône (spotlight only)
Dans gleslib et oglilib, le nombre maximum de lumières est de cinq ; dans webglilib, le nombre maximum est de huit.
Un matériau peut être créé comme suit. Un matériau, s'il est utilisé, modifie les propriétés, par exemple : de réflexion, de la surface. La composante émissive est utilisée uniquement dans le module webgllib ; elle est ignorée dans les modules gleslib et ogllib.
DIM material{ Diffuse{ r% , g% , b% , a% } , Ambient{ r% , g% , b% , a% } , \
\ Specular{ r% , g% , b% , a% } , Emissive{ r% , g% , b% , a% } , Power% }
mat%(0) = material{} - PAGE + !340
material.Diffuse.r% = FN_f4( 0.0 ) : REM - composant rouge de la couleur diffuse
aterial.Diffuse.g% = FN_f4( 0.7 ) : REM - composant vert de la couleur diffuse
material.Diffuse.b% = FN_f4( 1.0 ) : REM - composant bleu de la couleur diffuse
material.Ambient.r% = FN_f4( 0.25 ) : REM - composant rouge de la couleur d'ambiance
material.Ambient.g% = FN_f4( 0.25 ) : REM - composant vert de la couleur d'ambiance
material.Ambient.b% = FN_f4( 0.25 ) : REM - composant bleu de la couleur d'ambiance
material.Specular.r% = FN_f4( 1.0 ) : REM - composant rouge de la couleur spéculaire
material.Specular.g% = FN_f4( 1.0 ) : REM - composant vert de la couleur spéculaire
material.Specular.b% = FN_f4( 1.0 ) : REM - composant bleu de la couleur spéculaire
material.Emissive.r% = FN_f4( 0.0 ) : REM - composant rouge de la couleur émissive
material.Emissive.g% = FN_f4( 0.0 ) : REM - composant vert de la couleur émissive
material.Emissive.b% = FN_f4( 0.0 ) : REM - composant bleu de la couleur émissive
material.Power.% = FN_f4( 100 ) : REM - brillance de la couleur spéculaire
Les tableaux de paramètres d'objet doivent contenir au moins autant d'éléments que la valeur de nobj%.
Les tableaux inutilisés, par exemple mat%() ou tex%(), doivent contenir des zéros,il s'agit de l'état initial après DIM.
Les rotations s'effectuent autour des axes du monde dans l'ordre suivant : roulis puis tangage puis lacet .
Note : il n'est pas possibles d'afficher des graphismes OpenGL et des textes et des dessins générés par des instructions BBC BASIC dans la même fenêtre de sortie. Voir le module multiwin.bbc pour afficher plusieurs fenêtres de sorties dans une même application.
Rappel : selon l'environnement de l'exécution de l'application, il faudra choisir un des modules : ogllib, gleslib ou webgllib.
La fonction FN_loadtexture() est importée depuis le module ogllib.bbc.
/examples/graphics/bbcowl.bbc
lighting.bbc
pyramid.bbc
teapot.bbc
world.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.
EXEMPLES.
Pour de nombreux détails et une meilleure compréhenssion des possibilités offertes par ces modules, il est conseillé de tester et d'étidier attentivement les exemples bbcowl.bbc, lighting.bbc, pyramid.bbc, teapot.bbc et world.bbc, fournis par R.T. RUSSELL dans le répertoire /examples/graphics/.
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.