Site News
Research
Texts
X-philo
Code
KB
Awards
Links
Site Map





Copyright (c)
2000-04
by Newsdee

   

Encore plus loin: 640x480 et 3D
(en reponse a: sylla)

Je n'arrive pas a installer DJGPP, ou est-ce que je peux trouver des instructions?

Voici un site qui contient des instructions d'installation en Francais: http://www.ifrance.com/arthurbro/djgpp.html.

Cependant, DJGPP a ete concu a l'epoque du DOS, et il y a aujourd'hui des compilateurs gratuits qui ressemblent plus au Visual C++, et qui sont un peu plus faciles a utiliser sous Windows. Refere-toi a "Comment programmer sous WIndows XP?" sur ma page pour plus de details.

Comment programmer les resolutions graphiques 640x480 (et plus)?

Une excellente question! Malheureusement, ce n'est pas aussi simple que le mode 13h. A l'epoque, le VGA/MCGA (320x200) etait un standard qui fonctionnait de la meme facon chez tous les fabriquants. Donc un programme qui utilise le mode 13h doit, en theorie, tourner dans toute carte VGA. Dans les resolutions avancees, nommees "SVGA" (ou Super-VGA), c'est une toute autre histoire!

Chaque carte avait (a l'epoque) plusieurs fonctions d'initialisation qui leur etaient unique. Pire, la structure des pixels pour les modes 24/32 bits varient de carte en carte. Les couleurs sont codifiees sur trois octets (soit 24 bits), un pour le Rouge (R), un pour le vert (G), et un pour le bleu (B). Cependant les ordinateurs ne savent pas utiliser autre chose que des puissance de deux, et comme 24 n'est pas une puissance de deux, il est plus rapide d'utiliser 32 bits a la place.

Ah, tu me diras, mais 32 bits prend plus de place. Oui, en effet, et surtout a des hautes resolutions. Cependant, c'est beaucoup plus rapide car un processeur moderne peut manier 32 bits d'un seul coup, alors que pour 24 bits il doit d'abord s'occuper de 16 bits puis des 8 bits restants. En bref, le mode 24 bits est (en theorie) deux fois moins performant que le mode 32 bits! (bien sur dans les derniers PC ultrapuissants, ce n'est plus vraiment un probleme).

Mais puisque les couleurs sont codees sur 24 bits, il faut faire quelque chose avec l'octet restant. Certaines cartes utilisaient cette valeur pour la transparence du pixel (cad s'il doit se melanger avec ce qu'il a derriere lui s'il s'agit d'un sprite), et notaient cette valeur "Alpha" (A). La structure d'un pixel serait donc RGBA.Et c'est la que les ennuis commencent, car chaque carte a sa propre maniere de construire son pixel. Certaines cartes seront RGBA (comme il se doit, dirais-je), mais d'autres font du ARGB, BARG, ou toute autre combinaison bizarre.

Tout ca est pour dire que programmer en SVGA est une toute autre bestiole que le mode13h, car il faut programmer plusieurs cartes en meme temps. Ca devient vite un cauchemar. Meme la programmation d'un standard nomme VESA (justement pour standardiser un peu le tout) demande parfois d'ecrire certaines fonctions de detection. Ca devient vite tres lassant!

Heureusement, il y a maintenant des librairies toutes faites pour rendre tout cela transparent. Refere-toi a "Quelle librairie utiliser sous C++?" pour plus d'informations. Heureusement, les connaissances acquises lors de la programmation mode13h ne sont pas perdues: au contraire, elles te permettent de comprendre comment mieux utiliser ces librairies graphiques.

Quel est le type de la variable imagePCX, et comment utiliser la fonction fopen?
(en reference a l'instruction imagePCX=fopen("chemin d'acces","rb"); )

fopen est une fonction de base du compilateur, qui permet d'ouvrir un fichier. Le type quelle retourne est un pointeur sur un fichier (FILE *), et donc tu dois inclure la librairie approprie pour t'en servir (je crois que c'est file.h, mais ca peut changer selon le compilateur). Tu es libre de definir le chemin d'acces, si tu veux placer l'image dans le meme repertoire que ton fichier image.pcx, tu n'as qu'a ecrire fopen("image.pcx","rb"), mais si tu veux un sous-repertoire (ex. "images"), tu dois alors ecrire, par exemple: fopen("./images/image.pcx","rb").

Ensuite, pour manipuler l'image, tu doit lire le fichier en suivant la structure standard d'une image PCX, et donc tu peux adapter la fonction a n'importe quelle image du moment que tu connais la structure du fichier et la methode de decompression. Voici une page avec un exemple complet: http://www.quakeforge.net/doxygen/pcx_8c-source.html

Comment faire de la 3D?

La 3D est la suite de l'aventure graphique, avec l'entree en scene des maths. En gros, toute 3D sur un PC n'est rien d'autre qu'un trucage. Car un ecran est bi-dimensionnel! En consequence, on prend un objet 3D et on fait une projection sur une surface 2D (l'ecran). Pour afficher un objet en 3D, il te faut tout d'abord construire l'objet en question, avec un programme de 3D. L'objet en soit est une definition de points (vertex) qui constituent une maille (mesh). Apres tu definies la texture qui iront se coller sur la maille. Ton programme doit gerer tout ca, et afficher avec une certaine illumination afin que l'objet soit visible. Apres tu dois faire recours a des maths matricielles pour faire bouger les objets.

Mon conseil est d'apprendre les bases (il y a de tres bons livres dedies a cela, chercher par exemple l'auteur Andre LaMothe), puis voir si ce que tu veux faire peut etre fait avec une certaine librairie (Allegro a quelques fonctions 3D de base).

- Newsdee, 28 Fevrier 2004.