lightening, alpha et couleur, l'horreur totale

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

non mais je veux dire à ce qui tu y as ajouté, ca marche comment exactement ?
Anonyme

Message par Anonyme »

J'accède à la structure interne des sprites 3D
je modifie la couleur des vertices du sprite avec RGBA()
j'affiche.
Tu peut quasiment tout faire avec la structure interne. sauf le café :D
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

bon je sais je suis nul mais à quoi correspond : "*" devant sprite et le << en pb ?

Pourquoi un tableau de couleur vu que tu utilises les valeur r,g, b de ma structure ?

doit y avoir des trucs à virer la dedans qui servent plus je pense, comme l'alpha, il est situé entre quelle et quelle valeur ?
Anonyme

Message par Anonyme »

Extrait de la doc :
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.
le <*> designe un pointeur ( dans l'exemple il pointe la structure du sprite )
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.
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

oui en fait je me suis mal exprimé je savais que "*" était un pointeur :D

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 ?
Anonyme

Message par Anonyme »

Crystal Noir a écrit :oui en fait je me suis mal exprimé je savais que "*" était un pointeur :D

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 ?
Debug 6 << 2
Debug (6+6)*2

Debug 12 << 2
Debug (12+12)*2
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.

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.

@+
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

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 :)
Anonyme

Message par Anonyme »

Bah en fait " *S.PB_SPRITE3D " ne pointe sur rien , c'est un pointeur de structure vide , le fait de faire :

Code : Tout sélectionner

*S.PB_SPRITE3D = IsSprite3D(#spr)
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
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

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.
Anonyme

Message par Anonyme »

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..."
voici un code pour mieux comprendre, si tu ne comprends toujours pas lis ceci :


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.
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

ouais c'est bien compliqué tout cela. donc si je pige bien c'est comme si on ajoutait un paramètre inexistant à la fonction rgb de base et ce en décalant les bits.

Pour la structure de sprite3D tu la vois ou dans le visualisateur ?
Anonyme

Message par Anonyme »

je suis sous linux, je ne la voit pas.
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

tu l'as chopé ou alors ? :D car sous windows je la vois pas non plus :D
Anonyme

Message par Anonyme »

sur l'un des forums US ou FR je sais plus.
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

tiens question à part la version linux 4 marche bien sous linux ?
Répondre