[c++] hexa, besoin explication

hexa, besoin explication [c++] - C++ - Programmation

Marsh Posté le 05-10-2003 à 10:37:45    

Voilà je suis en train de faire une petit prog en dgraphics (2d) et j'ai recuperer une fonction de blit bien chouette (tut. jpeg) qui permet à partir d'un nombre du type 0xFFFFFFFF passé en paramètre de gérer la transparence ansin que la coloration du blit.
 
Donc le truc c que les 2premiers "F" s'occuppent de la transparence (base 16 donc de 0->9->A->F si j'ai bien compris :crazy:) et les autres des composantes R-G-B.
Bon mon problème est que j'aimerais coder un Fade qui joue sur ce paramètre de transparence. Mais comment faire pour gérer independamment les infos sur la transparence et les infos sur les couleurs dans un seul nombre --->> nb--??? (au fait de type UINT = unsigned int?? :??:).
 
J'ai jamais trop manier de nombre hexadécimaux et j'aurais besoin de quelques (grosses) explications sur ce sujet!
:jap: :jap:! Allez à votre bon coeur messieurs dames ! :jap: :jap:

Reply

Marsh Posté le 05-10-2003 à 10:37:45   

Reply

Marsh Posté le 05-10-2003 à 10:55:29    

Le nombre hexa n'a pas de signification particuliére.
C'est un style d'écriture du nombre.
 
Tu peut modifier ton alpha en utilisant des masques binaires.

Reply

Marsh Posté le 05-10-2003 à 11:06:36    

L'écriture je savais, mais ce qui me chagrinais c'est de pouvoir stocker plusieurs infos à priori incompatibles, trans. et couleur, dans un même entier.... :ouch:
Euh comment ça marche les masques binaires (sorry, y faut tout m'éxpliquer moi!!! :D)

Reply

Marsh Posté le 05-10-2003 à 11:09:31    

c'est écrit dans ton bouquin de C++

Reply

Marsh Posté le 05-10-2003 à 11:12:54    

bah non ^_^ :p
Bon d'accord je surmonte ma flemme --->>> google  ;)

Reply

Marsh Posté le 05-10-2003 à 11:15:56    

étant donné que tu as une culture informatique apparemment limitée, l'achat d'un vrai livre d'apprentissage est loin d'être superflue. Programmer, c'est un métier, les mots clefs les plus recherchés sur google {sex, Lolita, anal, StarWars, ...}, je crois que tu es capable de comprendre quel média te permettra de progresser

Reply

Marsh Posté le 05-10-2003 à 11:17:15    

On va partir du postulat que tu connais un minimum le C.
 
Un masque binaire ets une valeur numérique qeu l'on va combiner grace aux operateurs binaires du C à savoir :
 

Code :
  1. &, |, ^


 
respectivement ou bit à bit, et bit à bit et oue xclusif bit à bit.
 
En clair, que ce passe t il, si on prend la représentation binaire d'un nombre ? :
 

Code :
  1. // x = 27 en décimal
  2. x = 00011011
  3. // mask = 13 en decimal
  4. mask = 00001101
  5. x & mask = 00011011
  6.          & 00001101
  7.            ---------
  8.            00001001 = 9
  9. x | mask = 00011011
  10.          | 00001101
  11.            ---------
  12.            00011111 = 63
  13. x ^ mask = 00011011
  14.          ^ 00001101
  15.            ---------
  16.            00000110 = 6


Si tu veux + d'infos :
 
OU
x y  (x | y)
1 1     1
1 0     1
0 1     1
0 0     0
 
 
ET
x y  (x & y)
1 1     1
1 0     0
0 1     0
0 0     0
 
 
OU EXCLUSIF
x y  (x ^ y)
1 1     0
1 0     1
0 1     1
0 0     0
 
A partir de la a toi de trouver le mask et la ou les opération s permettant de passer de ta couleur 32 bits à la meme couleur avec un alpha différent.
 
Le truc serait par exemple :
 

Code :
  1. unsigned long couleur = 0x2255FC44; // couleur bidon
  2. unsigned long mask1   = 0xFF000000; // mask d'extraction de l'alpha
  3. unsigned long mask2   = 0x00FFFFFF; // mask d'extraction de la couleur
  4. unsigned long alpha = couleur & mask1 // alpha = 0x22000000
  5. unsigned long coul  = couleur & mask2 // coul  = 0x0055FC44
  6. alpha = alpha*2       // alpha = 0x44000000
  7. couleur = alpha | coul // couleur = 0x4455FC44


 
voila

Reply

Marsh Posté le 05-10-2003 à 11:18:45    

terrain glissant ...
 
on monte une boîte de e-learning ?

Reply

Marsh Posté le 05-10-2003 à 11:20:15    

deconne pas j'ai des cours de ca  à donner cette année :D
l'info en fac de médecine miam miam

Reply

Marsh Posté le 05-10-2003 à 11:21:44    

Taz : Arff c bon, moi programmer je fais ça pour le plaisir.
Faut pas s'énerver :D :lol:
 
JoelF : Merci encore, c sympa d'avoir pris le temps de la réponse :jap: :jap: :jap: :jap:  
 

Reply

Marsh Posté le 05-10-2003 à 11:21:44   

Reply

Marsh Posté le 05-10-2003 à 11:22:41    

je m'énerve pas. juste que si tu veux jouer avec ton train électrique sans le manuel, le plaisir s'en va vite

Reply

Marsh Posté le 05-10-2003 à 11:49:09    

Taz a écrit :

si tu veux jouer avec ton train électrique sans le manuel, le plaisir s'en va vite


 
y a un manuel avec les trains électriques ? :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-10-2003 à 11:52:35    

Taz a écrit :

Programmer, c'est un métier, les mots clefs les plus recherchés sur google {sex, Lolita, anal, StarWars, ...}, je crois que tu es capable de comprendre quel média te permettra de progresser


 
le Taz, plus ca va, plus ses posts deviennent opaques a mes yeux [:wam]

Reply

Marsh Posté le 05-10-2003 à 12:05:27    

je pense qu'il veut dire que google c pas forcement LE moyen de trouver des infos pertinentes sur le sujets ...

Reply

Marsh Posté le 05-10-2003 à 12:07:33    

on se demande pkoi il le dit pas comme ca :o [:ddr555]

Reply

Marsh Posté le 05-10-2003 à 12:08:29    

chrisbk a écrit :

on se demande pkoi il le dit pas comme ca :o [:ddr555]


 
effectivement [:ddr555]

Reply

Marsh Posté le 05-10-2003 à 12:10:28    

parce que pourquoi faire simple quand on peut faire compliqué...

Reply

Marsh Posté le 05-10-2003 à 13:15:03    

il y a une différence entre connaître le chemin et arpenter le chemin.


Message édité par Taz le 05-10-2003 à 15:40:16
Reply

Marsh Posté le 05-10-2003 à 14:28:20    

c qd même plus simple de travailler avec ce genre de méthode ?
 
 
RGBA = (65535,65535, 65535, 65535)
 
ou encore
 
 
RGBA = (1.0f,1.0f, 1.0f, 1.0f)

Reply

Marsh Posté le 05-10-2003 à 14:29:29    

iS@mi a écrit :

c qd même plus simple de travailler avec ce genre de méthode ?
 
 
RGBA = (65535,65535, 65535, 65535)
 
ou encore
 
 
RGBA = (1.0f,1.0f, 1.0f, 1.0f)


 
heuh ouais sauf que ta carte graphique elle va te regarder comme ca  : [:le kneu] si tu lui envoie des blagues pareilles

Reply

Marsh Posté le 05-10-2003 à 14:31:30    

chrisbk a écrit :


 
heuh ouais sauf que ta carte graphique elle va te regarder comme ca  : [:le kneu] si tu lui envoie des blagues pareilles
 


 
unsigned long couleur = RGBA(255,255,255,255);  :D

Reply

Marsh Posté le 05-10-2003 à 14:32:37    

iS@mi a écrit :


 
unsigned long couleur = RGBA(255,255,255,255);  :D  


 
ah ben la je veux bien :o
mais pkoi tu nous causais en float et en unsigned short par composantn avant ? [:le kneu]

Reply

Marsh Posté le 05-10-2003 à 14:36:24    

a mon avis il pensait OpenGL/D3D :lol:
 
Je suis crevé de rire a cause de ce post :
 

Citation :

heuh ouais sauf que ta carte graphique elle va te regarder comme ca  : [:le kneu] si tu lui envoie des blagues pareilles


 
J'imagine la tete de la cg a la kneu :lol:


Message édité par Tetedeiench le 05-10-2003 à 14:36:52

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 05-10-2003 à 14:37:34    

D'ailleurs, tous les drivers devraient implémenter un mode d'erreur "kneu" qui fait que la CG affiche un kneu des que le programmeur fait un grosse connerie :lol:


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 06-10-2003 à 02:23:05    

chrisbk a écrit :


 
heuh ouais sauf que ta carte graphique elle va te regarder comme ca  : [:le kneu] si tu lui envoie des blagues pareilles
 


 
 [:ddt]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed