Search this site
Embedded Files
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
  • More
    • Accueil
    • BBC BASIC
    • BBC OS
    • BBC MODULES
    • RUBRIQUES
    • LIENS

⇨ 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

vos remarques, vos commentaires et de vos suggestions.

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.

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse