Citation :
Alors j'avais trouvé pour le mode VGA et l'int 10h. Mais au mieux, je peux aller en 320*240 avec 256 couleurs. C'est assez restrictif !
|
Ben oui, c'est le VGA.
Tu peux pas aller plus loin que ca en 256 couleur, et 640*480 en 16 couleurs (ce qu'utilise Windows9x en mode sans echec)
Citation :
De plus, je ne suis même pas certain que l'adresse de base de la mémoire vidéo pointe réellement sur la mémoire vidéo : on dirait plus un emplacement dans la ram.
|
Le PC possede 2 espages d'adressage : les ports d'E/S (0-65535) et la mémoire vive (0-4Go)
Pour communiquer avec un périphérique, celui-ci utilise un de ces 2 espaces, ou les 2.
Donc le RAM de ta carte est manipulée comme si c'était de la RAM du PC.
Le VGA utilise un fenetre de A0000 à BFFFF (128 Ko) qu'elle utilise d'une certaine maniere pour que l'on puisse manipuler ses 256Ko de RAM (y'a des bascules qui permettent de choisir quelle plan de 64Ko parmis les 4 possibles est affecte quand on ecrit à A0000-AFFFF)
Citation :
J'aimerais bien pouvoir afficher des résolutions honnêtes (640*480 au min !) avec une profondeur de couleurs correcte (min 16 bits !). Pour cela, il semble exister le VESA ... Mais je me dis que si j'aimerais exploiter au mieux ma carte graphique, le mieux serait quand même de passer par les drivers de celle-ci !
|
Le VGA a un avantage : c'est le seul denominateur commun au niveau hardware entre toutes les cartes (enfin toutes celles compatibles VGA, soit le plupart)
Mais il est limité ...
Chaque nouvelle carte SVGA etant radicalement differente des autres, on s'est resigné à un standard logiciel commun : le VESA.
Le VESA permet de monter en 1600*1200 et 32 bits, si la carte le permet, tout ca au moyen d'un BIOS VESA, qui vient s'ajouter au BIOS VGA.
Les constructeurs ne sont pas obligés, ils font ce qu'ils veulent. Ils peuvent supporter une version VESA partiellement.
Le BIOS VESA a lui aussi un gros defaut : c'est du code 16 bits.
Et c'est la que ca devient chiant.
Effacer un ecran de 1600*1200*32 a coup de plages de 64Ko, c'est chiadique et lent.
Pour bien l'utiliser, il faut etre en mode protegé. Mais appeler de code 16 bits reel en mode protege, c'est galere ...
Alors y'a VESA 3 qui offre une interface mode protege. C'est toujours du code 16 bits, mais il est ecrit pour ne pas merder en mode protege.
Mais c'est galere a utiliser.
Faut bien connaitre l'OS car il faut allouer un page de code executable en mode reel, mais sur 16 bits. Et y'a des magouilles a faire, et faut avoir le droit d'utiliser les ports ... bref, faut se coder un vrai driver, et je m'y suis jamais risqué, meme si ca reste dans les cartons (j'attend d'avoir les compétences)
Alors je me suis recemment rabatu sur Linux.
Linux magouille un peu : il utilise le VESA alors qu'il est encore en mode reel (lors du boot) et passe les infos au kernel en mode protege pour qu'il puisse ecrire dans la RAM video ensuite.
Si ca te tente, tu peux jeter un coup d'oeil au sources du driver vesa, dans /drivers/video.
Mais tu peux pas en faire grand chose, il est utilisé pour créer une console et donc juste manipuler du text (par /drivers/video/fbcon.c).
Autant que je sache, le meilleur truc que j'ai vu qui utilise le VESA pour faire de la prog graphique, c'est Allegro.
Pareil, ca part de DOS, mais ca bifurque en mode protege ensuite.
Citation :
Je suppose qu'entre Windows et les drivers, il y a une sorte d'interface standard, non ? Est-il possible de connaître les détails de cette interface afin d'envoyer mes commandes à la carte graphique non plus par l'intermédiaire de Windows (qui enverra ensuite aux drivers), mais bien aux drivers directement ?
|
Je me suis aussi posé la question. Mais je te l'ai dit, c'est dans les cartons.
La seule doc que j'ai croisé la dessus (je l'ai tout juste survolée), c'est les explication (avec exemple je crois) du DDK pour développer ton pilote de carte graphique.
J'avais téléchargé le kit de nvidia aussi (ils ont sorti un langage qui permet d'utiliser directement leur cartes graphiques, ca serait une sorte de synthese DirectX - OpenGL) mais le zip etait fouarreux
rien pu savoir de plus
Donc si c'est manipuler ta carte graphique qui t'interresse, je pense qu'il faut s'orienter vers les drivers.
Tu peux farfouiller dans les sources des drivers d'XFree aussi, mais sans aucune doc, perso, j'ai pas pigé qui fait quoi. (j'ai pas trop bataillé non plus)
Sinon y'a les sources de VBeaf, utilisé par Allegro (http://www.talula.demon.co.uk/freebe/). Mais y'a pas beaucoup de cartes. Mais c'est assez simple à lire.
Good luck !
Message édité par HelloWorld le 08-01-2003 à 13:52:08
---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite