lightening, alpha et couleur, l'horreur totale
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07
Extrait de la doc :
on lui donne l'adresse du sprite ( IsSprite3D() )
le tableau que j'ai mis sert à avoir des couleurs différentes, ici 6.
sinon, tu peut faire un Random(255) pour initialisé des couleurs aléatoire
l'alpha sert toujours dans l'exemple.
le <*> designe un pointeur ( dans l'exemple il pointe la structure du sprite )Opérateur << (Décalage à gauche)
Décale vers la gauche les bits du nombre LHS de RHS places. Décaler les bits vers la gauche revient à faire une multiplication par un multiple de 2. Il est conseillé de bien comprendre les opérations binaires avant d'utiliser cet opérateur.
on lui donne l'adresse du sprite ( IsSprite3D() )
le tableau que j'ai mis sert à avoir des couleurs différentes, ici 6.
sinon, tu peut faire un Random(255) pour initialisé des couleurs aléatoire
l'alpha sert toujours dans l'exemple.
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07
oui en fait je me suis mal exprimé je savais que "*" était un pointeur 
En fait j'ai du mal avec les pointeurs.
pour le << je dois dire que je ne comprends pas bien comment ca fonctionne il n y a pas une alternative à "<<" qui pourrait me paraitre plus claire ?
pour l'alpha quel valeur ca peut prendre ? car dans certains langage c'est entre 0 et 1 et dans d'autre c'est 0 / 255...
Pour la structure de Sprite_3D j'ai pas trouvé dans la doc, ya un endroit où il y a la structure complète ?

En fait j'ai du mal avec les pointeurs.
pour le << je dois dire que je ne comprends pas bien comment ca fonctionne il n y a pas une alternative à "<<" qui pourrait me paraitre plus claire ?
pour l'alpha quel valeur ca peut prendre ? car dans certains langage c'est entre 0 et 1 et dans d'autre c'est 0 / 255...
Pour la structure de Sprite_3D j'ai pas trouvé dans la doc, ya un endroit où il y a la structure complète ?
Crystal Noir a écrit :oui en fait je me suis mal exprimé je savais que "*" était un pointeur
En fait j'ai du mal avec les pointeurs.
pour le << je dois dire que je ne comprends pas bien comment ca fonctionne il n y a pas une alternative à "<<" qui pourrait me paraitre plus claire ?
pour l'alpha quel valeur ca peut prendre ? car dans certains langage c'est entre 0 et 1 et dans d'autre c'est 0 / 255...
Pour la structure de Sprite_3D j'ai pas trouvé dans la doc, ya un endroit où il y a la structure complète ?
les couleurs vont de 0 a 16777215 sans l'apha, la manip plus haut permet d'ecrire l'alpha donc la couleur ira à + de 16777215.Debug 6 << 2
Debug (6+6)*2
Debug 12 << 2
Debug (12+12)*2
pour la structure, je te l'ai filé, sinon regarde avec le structure viewer inclu.
Sinon pour l'apha, cela ne dépend pas du langage, mais de l'api en générale, opengl peut prendre des valeur allant de 1 a 0 ou 0 a 255 , cela depend aussi de la commande. en pb c'est de 0 a 255, si tu veut une valeur de 0 a 1 , tu multiplie par 255.
@+
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07
Bon ok maintenant je comprends que :
Debug 6 <<2
c'est pareil que
Debug (6+6) *2
seulement dans notre code pourquoi le << 24 ?
Pour le pointeur là, pourquoi l'identifier avec un pointeur le sprite alors qu'il existe déjà une structure pour lui ? (non non je ne suis pas un boulet)
En prog j'arrive à pas mal de chose mais les pointeurs ne sont pas vraiment mes amis
Debug 6 <<2
c'est pareil que
Debug (6+6) *2
seulement dans notre code pourquoi le << 24 ?
Pour le pointeur là, pourquoi l'identifier avec un pointeur le sprite alors qu'il existe déjà une structure pour lui ? (non non je ne suis pas un boulet)
En prog j'arrive à pas mal de chose mais les pointeurs ne sont pas vraiment mes amis

Bah en fait " *S.PB_SPRITE3D " ne pointe sur rien , c'est un pointeur de structure vide , le fait de faire :
permet de donner l'adresse du sprite à se pointeur
ensuite, il ne reste plus qu'a modifié *S avec sa structure pour donné des effets à ton sprite
Pourquoi le 24 ?
R = 8 bits
G = 8 Bits
B = 8 Bits
3*8 = 24
Code : Tout sélectionner
*S.PB_SPRITE3D = IsSprite3D(#spr)
ensuite, il ne reste plus qu'a modifié *S avec sa structure pour donné des effets à ton sprite
Pourquoi le 24 ?
R = 8 bits
G = 8 Bits
B = 8 Bits
3*8 = 24
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07
Pour la structure sprite3D je ne l'ai pas trouvé dans le visualisateur de structure ??
En fait c'est pas 24 que je demandais, c'est pourquoi il faut mettre cet enssemble << 24 ? ca change quoi dans la procédure
EDIT : enfin c'est vrai que j'ai du mal là quand même je pige tout du coup sauf ce << 24 à la fin de la procédure.
En fait c'est pas 24 que je demandais, c'est pourquoi il faut mettre cet enssemble << 24 ? ca change quoi dans la procédure
EDIT : enfin c'est vrai que j'ai du mal là quand même je pige tout du coup sauf ce << 24 à la fin de la procédure.
Code : Tout sélectionner
Structure BGRA
B.c
G.c
R.c
A.c
EndStructure
Procedure RGBA( Red , Green , Blue ,Alpha)
ProcedureReturn RGB ( Blue , Green , Red ) + Alpha << 24
EndProcedure
;Couleur Rouge
C = RGBA(255,0,0,255)
;Pointeur vers la couleur :D
*Color.BGRA = @C
Debug "Rouge="+Str(*Color\R)
Debug "Vert ="+Str(*Color\G)
Debug "Bleu ="+Str(*Color\B)
Debug "Alpha="+Str(*Color\A)
Debug "BGRA=="
Debug PeekL(*Color)
Debug RGBA(255,0,0,255)
Debug "RGB"
Debug RGB(255,0,0)
Debug "RGB ne va pas en dessous de 0, donc impossible en natif de fournir le l'alpha..."
le format est codé comme ceci :
[ RED = 1 octet ( 8 bits )] [ GREEN = 1 octet ( 8 bits )] [ BLUE = 1 octet ( 8 bits )]
Avec la fonction RGB() tu te promènes dans les points que j'ai representé en dessous :
.... .... ....
tu ne peut allé au dela des points sauf en faisant en décalage de bits
.... .... .... ....
on a rajouté l'alpha 24 bits plus loin.
Dernière modification par Anonyme le jeu. 19/juil./2007 15:04, modifié 1 fois.
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07