Tasm, couleurs 32bits ou 24bits?

Signaler
Messages postés
50
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
14 avril 2005
-
Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011
-
Lu all! J'me suis mit à la prog asm, la j'arrive à afficher une image en 800*600*32bits, mais mon prob c'est que la plage memoire pour un pixel est de 4octets et non trois comme un bmp 24bits(en resumé: pour afficher un pixel, faut donner le rgba et non rgb comme un gros bmp), ce qui fait que mon prog affiche pixel par pixel au lieu d'envoyer des gros bouts de memoires directement et sa fait beaucoup ramer au chargement(en back buffer comme en direct).(mon mode graphique je le passe grace à la fonction 115h) . Certains sites disent que le mode 800*600*32bits est composé de couleur rgb et non rgba mais bon meme si c'est le cas sa veut dire qu'il faut mettre un octet qui sert à rien pour afficher un pixel. J'aimerais donc savoir si y a un mode 800*600*24bits (ou 32 bits mais avec une plage de 3octets par pixels: ce qui est pas logique mais bon), enfin en tout cas un mode qui me permet d'afficher des pixels en 800*600 rgb, soit 3 octets par pixels et non rgba de 4 octets par pixel.merci d'avance(j'ai du mal à me faire comprendre)lol. si vous avez une fonction sinon pour passer en 24bits sans changer la resolution (en gardant 800*600*32bits) j'accepte aussi. merci

1 réponse

Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011

Salut qbced ,

Bon primo , petite correction : tu n'utilise pas la fonction 115h mais la fonction 4f02h , en lui passant 115h comme argument (au passage , c'est 118h pour le 1024*768 et 11bh pour le 1280*1024) .

Tu travail en mode VESA , donc peut importe que ce soit du 32 ou du 24 bits , c'est du RBG (jamais de RGBA) . Le quatrième octect est donc vide (note :la place de l'octet vide , et la position de chaque couleur dans le paquet de 3 ou 4 octets peut varier , pense à faire un test de vérification avec 4f01h pour obtenir les données exactes du mode) .

Pour ce qui est de passer en 24bits , c'est pas possible, car en générale , les cartes VESA supporte soit le 32bits , soit le 24bits , mais pas les deux . Donc si , quand tu lance le mode 115h , et que tu obtient un mode 32bits au lieu de 24 , ben va falloir faire avec (ou allors acheter une autre carte graphique mais bon...) .

Je ne suis d'ailleur pas sur de comprendre pourquoi tu as envie d'etre en 24bits , le 32bits permet d'accélérer les calculs , puisque 4(octet) étant un nombre pair , on a pas besoin de tester si chaque octect déborde ou pas du chunk (ce qu'on est obligé de faire si on écrit par paquet de 3octets ).
Si ton programme rame , ca doit être du à autre choses (je parie que tu change de chunk à chaque pixel).
Si ça rame vraiment , met le code de ta fonction , on vera ce qu'on peut faire .
Si t'as d'autre question sur le vesa , vas-y , c'est un sujet que je connais pas mal .

A+