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

FN_load3d()

DESCRIPTION.


La fonction FN_load3d() charge en mémoire, depuis un fichier binaire, les composants d'un objet ou d'une scène.




SYNTAXE.


kobjet = FN_load3d( etat , fichier , quantite , format , taille )




REMARQUES.


etat est l'identifiant de la variable qui a reçu la valeur retourné par la fonction d'initiation FN_initgl().


fichier doit être le nom d'un fichier au format .fvf (Flexible Vertex Format) existant. fichier peut être exprimé de façon absolu ou relative. Le format de fichier doit être le suivant : 

- le nombre de sommets (4 octets, l' octet de poids faible en premier) ;

- le format de vertex (2 octets, LSB en premier) ;

- la taille du sommet en octets (2 octets, LSB en premier) ;

- les données de chaque sommet ( Code l Taille l Données l Commentaires ) ; 

- &002 l 12 l Position XYZ l obligatoire ; 

- &010 l 12 l Normale de la surface l si l'éclairage est utilisé ; 

- &040 l 4 l Couleur diffuse l si aucune texture n'est spécifiée ; 

- &080 l 4 l Couleur spéculaire l pour les objets brillants (*) ; 

- &100 l 8 l coordonnées de texture UV l si une texture est spécifiée.


quantite doit être l'identifiant d'une variable au format % (nombre entier sur 32 bits) existante. quantite recevra la valeur correspondante aux nombre de sommets.


format doit être l'identifiant d'une variable au format % (nombre entier sur 32 bits) existante. format recevra la valeur correspondante au format des sommets.


taille doit être l'identifiant d'une variable au format % (nombre entier sur 32 bits) existante. taille recevra la valeur correspondante à la taille en octets de chaque sommet.



L'appel de la fonction FN_load3d() va retourner un valeur numérique correspondant à  un pointeur vers un tampon de sommets. Cette valeur devra être stockée dans un variable pour un usage ultérieur. Si la fonction FN_load3d()  retourne 0, zéro, fichier n'a pas pu être ouvert.

 

Pour obtenir le code de format des sommets, additionnez les codes des éléments qui les composent. 


Pour obtenir la taille des sommets, additionnez les tailles des éléments qui les composent.


Les éléments de position XYZ et de normale à la surface sont chacun composés de trois nombres à virgule flottante de 4 octets.


Les éléments de couleur diffuse et de couleur spéculaire sont chacun composés de valeurs de couleur de 4 octets (&aarrggbb).


Les coordonnées de texture sont composées d'une paire de nombres à virgule flottante de 4 octets.


La description de sommet la plus simple comprend une position XYZ et une couleur diffuse (format &042 ; taille : 16 octets).


(*) La couleur spéculaire est actuellement ignorée ; pour les réflexions spéculaires, utilisez un matériau.




Le module ogllib.bbc comprend la définition d'une fonction ( FN_f4 () ) permettant de convertit un nombre en une valeur à virgule flottante de 4 octets (simple précision). De nombreuses valeurs à virgule flottante utilisées par OpenGL (par exemple, dans les descriptions de sommets) sont dans ce format. A titre d'illustration, le segment de code suivant, rédigé d'après celui de la documention officielle, crée un fichier contenant un triangle unique composé de trois sommets, pouvant être chargé par la fonction FN_load3d() :


INSTALL @lib$ + "ogllib.bbc"


kfichier% = OPENOUT "triangle.fvf"

PROC4( 3 ) : REM 3 vertices

PROC4( &100042 ) : REM vertex size &10 and format &42

PROC4( FN_f4( -1.0 ) ) : PROC4( FN_f4( -1.0 ) ) : PROC4( FN_f4( 1.0 ) ) : PROC4( &FF0000FF )

PROC4( FN_f4( 1.0 ) ) : PROC4( FN_f4( -1.0 ) ) : PROC4( FN_f4( 1.0 ) ) : PROC4( &FF00FF00 )

PROC4( FN_f4( 0.0  ) ) : PROC4( FN_f4( 1.0 ) ) : PROC4( FN_f4( 0.0 ) ) : PROC4( &FFFF0000 )

CLOSE kfichier%

END


DEF PROC4( Q% )

BPUT# kfichier% , Q%

BPUT# kfichier% , Q% >> 8

BPUT# kfichier% , Q% >> 16

BPUT# kfichier% , Q% >> 24

ENDPROC




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_load3d() est importée depuis le module ogllib.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.


INSTALL @lib$ + "ogllib.bbc"

kquantite% = 0 : kformat% = 0 : ktaille% = 0

ketat = FN_initgl( @hwnd% , 1 , 0 )

IF ketat = 0 THEN PRINT "Graphismes 3D indisponibles." 

kobjet = FN_load3d( ketat , "mon_objet.fvf" , kquantite% , kformat% , ktaille% )

PROC_release( kobjet )

PROC_release( ketat )

END

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