30

tiens, deja je te met les sources de mon ebauche de lotus que j'ai fait avant hier.
http://j2t.multimania.com/tempfilez/lotussrc.zip
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

31

y'a un sous-rep texedit:
c'est un truc qui te sort un tableau de polygones,
pour afficher des images'vectorielles' avec la routine filldots
tu devrais vite comprendre le fonctionnement.

j'ai fait le A_NORMAL,A_REVERSE et A_XOR parce que j'en avait en fait besoin.
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

32

je viens de faire une routine de remplissage de triangle : elle me permet d'afficher 750 tri a la sec au lieu des 150 de filltriangle
Ancien pseudo : lolo

33

as tu au moins essayé les routines qu'on t'a proposé?
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

34

vi, j'ai combiner celles de hyper.c et d'autres fournis dans l'autre topic
d'ailleurs, j'aimerais utiliser ta fnc hline, mais qui remplirais avec du blanc, mais g pas compris comment la modifier... tu pourais me l'expliquer svp ?
Ancien pseudo : lolo

35

void HLine(short x1,short x2,short y,char mode,char *buf)
{
short bx=x1;
char *addrf;
if(x1>x2)
{x1=x2;x2=bx;}
addrf=buf+((y<<5)-(y<<1))+(x2>>3);
buf+=((y<<5)-(y<<1))+(x1>>3);//va à la ligne

if(mode==A_NORMAL)
{if(buf!=addrf)
{
*buf++|=255>>(x1&7);
while(buf<addrf)
*buf++=255;
*buf|=255<<(8-(x2&7));
}
else
{
*buf|=(255>>(x1&7))&(255<<(8-(x2&7)));
}
}
else
if(mode==A_REVERSE)
{if(buf!=addrf)
{
*buf++&=~(255>>(x1&7));
while(buf<addrf)
*buf++=0;
*buf&=~(255<<(8-(x2&7)));
}
else
{
*buf&=~((255>>(x1&7))&(255<<(8-(x2&7))));
}
}
else
if(mode==A_XOR)
{if(buf!=addrf)
{
*buf++^=255>>(x1&7);
while(buf<addrf)
*buf++^=255;
*buf^=255<<(8-(x2&7));
}
else
{
*buf^=(255>>(x1&7))&(255<<(8-(x2&7)));
}
}
}

voila!
ça marche en NORMAL, REVERSE et XOR

tu n'as qu'à rajouter l'option dans les autres fcts
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

36

void FillTria(short xb1,short yb1,short xb2,short yb2,short xb3,short yb3,char mode,char *p)
{
register signed short yi,xs,xe,y1,y2,y3,x1,x2,x3;

//trie les points dans l'ordre
if(yb1<=yb2&&yb1<=yb3)
{
y1=yb1;
x1=xb1;
if(yb2<=yb3)
{
y2=yb2;y3=yb3;
x2=xb2;x3=xb3;
}
else
{
y2=yb3;y3=yb2;
x2=xb3;x3=xb2;
}
}
else
if(yb1>=yb2&&yb1>=yb3)
{
y3=yb1;
x3=xb1;
if(yb2<=yb3)
{
y1=yb2;y2=yb3;
x1=xb2;x2=xb3;
}
else
{
y1=yb3;y2=yb2;
x1=xb3;x2=xb2;
}
}
else
{
y2=yb1;
x2=xb1;
if(yb2<=yb3)
{
y1=yb2;y3=yb3;
x1=xb2;x3=xb3;
}
else
{
y1=yb3;y3=yb2;
x1=xb3;x3=xb2;
}
}
if(y1==y2)
HLine(x1,x2,y1,mode,p);
else
for(yi=y1;yi<y2;yi++)
{
xs=x1+(yi-y1)*(x2-x1)/NOT_NULL(y2-y1);
xe=x1+(yi-y1)*(x3-x1)/NOT_NULL(y3-y1);
HLine(xs,xe,yi,mode,p);
}
if(y3==y2)
HLine(x3,x2,y2,mode,p);
else
for(yi=y2;yi<y3;yi++)
{
xs=x2+(yi-y2)*(x3-x2)/NOT_NULL(y3-y2);
xe=x1+(yi-y1)*(x3-x1)/NOT_NULL(y3-y1);
HLine(xs,xe,yi,mode,p);
}
}
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

37

c impec !
j'ai combiné ton hline avec une proc de remplissage un peu comme la tienne mais ki evite les divisions : voici les resultats :
en 10 sec :
FillTriangle : 150 tri par sec
ma fnc : 1194 tri par sec !!!! ca c du rapide !!

franchement, merci a tous !!!!
Ancien pseudo : lolo

38

si tu pouvais poster ta routine de triangle...
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

39

dis, c'est particulièrement optimisé ça

xs=x1+(yi-y1)*(x2-x1)/NOT_NULL(y2-y1);
xe=x1+(yi-y1)*(x3-x1)/NOT_NULL(y3-y1);

dans la boucle principale de remplissage en plus!
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

40

merde je me suis planté : les chiffres ci-dessus, c'est pas pour 1 sec, mais pour 10 sec...tsss
aoups
Ancien pseudo : lolo

41

donc c'est plus lent...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

42

na pour tout il fo diviser par 10
donc c quand meme 10* plus râpide
Ancien pseudo : lolo

43

WAAARGGGGGG ???!!!!! par 10??!!
cad que FillTriangle fait 15 triangles par seconde?????!!!!!
ayayaye

et le tien 119 ?
bon c kan même mieux grin
tu utilises bresenham dans ta boucle ou bien 3 divisions au début du filltriangle pour avoir les pentes?
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

44

bon, zut c dommage que t'aie pas fait 1190 polys par seconde...
dc Filltriangle, c'est 15 polys/sec... GLface 50*+ rapid -> 750 polys/sec
vu ke je pense pas que PpHd aie codé son remplisseur comme un porc, ça doit être assez près du maximum atteignable...
en C ça doit être faisable 200-300 polys/sec...
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

45

Ca depend de la taille. Et j'ai pas optimise au maximum de chez maximum. Mais maximum only picol

46

grin ben pkoi pas optimisée maximum de chez maximum ? oui

47

Ca prendrait trop de place smile

48

ça sent la table précalculée à plein nez grin
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

49

janjan2>ta méthode de tri est plutôt lente, à mon avis, ça ça revient au même:

if(y1>y2)
{
   swap y1,y2
   swap x1,x2
}
if(y1>y3)
{
   swap y1,y3
   swap x1,x3
}
if(y2>y3)
{
   swap y2,y3
   swap x2,x3
}


bon, je c que swap n'est pas une instruction en c, mais il y a l'instruction exg en asm qui échange 2 regs, dc voila...
et c bcp+ simple que ta méthode (c'est ce que je faisais aussi au début, mais g trouvé ça et c bcp+ mieu)
[edit]Edité par sBibi le 08-02-2002 à 15:45:04[/edit]
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

50

TOUT A FAIT D'ACCORD.

51

c ce que j'ai fillé a lolo comme routine pr le fill triangle .. apparement ca marcherait bien grin

52

en tous cas, le remplisage des triangles a fait pas mals tombé mon fpsmourn
je suis maintenant a 40 fps pour le cube alors que j'etais avant a 72fps

j'ai d'ailleurs sorti une beta 5 :
http://lminguet.freesurf.fr/ti92/asm/
Ancien pseudo : lolo

53

ben faut voir deja si ton Hline est rapide ...

sinon, c normal que ca fasse largement tombé les perfs t'as bcp plus de pxl a peindre ..oui

54

grina peindregrin
bref... si vous voyez des optimisatiojns possibles ds mes sources, merci de m'aoder...grin.. car je suis pas encore assez bon pour savoir optimier reellement un prgm moi...sad
Ancien pseudo : lolo

55

en tou ca merci deja pour tout le resteoui
Ancien pseudo : lolo