jackiechan Le 29/06/2002 à 09:51Edité par Boo le 29/06/2002 à 09:53 var est soit strictement supérieur à 0 (dans le cas d'un pixel noir), soit nul (pixel blanc)
Par contre, je ne sais pas si c'est rapide, à mon avis ça l'est assez (une addition, un ET et un décalage de bits, ça doit pas être très long, tout ça), mais c'est sûrement optimisable...
Vark Le 29/06/2002 à 09:54 pas de valeur particulière qd c >0 ?
et niveau rapidité ça le fait ou pas trop ?
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & sabrina
jackiechan Le 29/06/2002 à 09:58Edité par Boo le 29/06/2002 à 10:33 quand c est >0, il peut prendre les valeurs suivantes : 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 ou 32768.
Mais tu n'as qu'à tester si ça marche, déjà, puis si c'est rapide...
Vark Le 29/06/2002 à 10:02 et ma méthode actuelle est irrecevable pour des gros sprites type 64x64 > ça prends trop de place
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & sabrina
Pen^2 Le 29/06/2002 à 10:02 oué bof, g rien dit, c pas mal en fait.
faudrait voir en asm.
Vark Le 29/06/2002 à 10:03 pourquoi ce changement d'avis si soudain ?
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & sabrina
Pourquoi tu fais un tableau de char sprt[16][16] ?
Ce serait mieux de faire short sprt[16].
Ou alors j'ai pas bien compris ce que tu voulais dire.
Pen^2 Le 29/06/2002 à 10:08 pour le rotozoom, faut que tu fasses le zoom et la rotation en une seule passe, ne fais pas d'abord le zoom et ensuite sur le truc obtenu une rotation, tu n'arriveras pas à qq chose de rapide.
et pour ton zoom, tu n'utilises pas déjà un getpixel ?
Ben avec ma technique ça devrait marcher pour accéder à un pixel d'abscisse x.
Et pour afficher ton sprite tu fais comment ?
Vark Le 29/06/2002 à 10:21 bon, valà mon source :
zoom=256;
zold=0;
while(1)
{
if(zoom!=zold)
{
yd=20;
xd=40;
ClearGrayScreen2B(GetPlane(0),GetPlane(1));
add=(yd<<5)-(yd<<1)+(xd>>3);
ptr0=GetPlane(0)+add;
ptr1=GetPlane(1)+add;
v=0;
while(v<4096)
{
x=0;
u=0;
while(u<4096)
{
spr=0x80>>((x)&7);
if(triso_C0[v>>8][u>>8])
*(ptr0+(x>>3))|=spr;
if(triso_C1[v>>8][u>>8])
*(ptr1+(x>>3))|=spr;
x++;
u+=zoom;
}
v+=zoom;
ptr0+=30;
ptr1+=30;
}
}
zold=zoom;
if(_rowread(0x2FF)&0x40)
goto end;
if(_rowread(0x2FF)&0x10&&zoom>40)
zoom-=8;
if(_rowread(0x1FF)&0x1&&zoom<256)
zoom+=8;
}
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & sabrina
Au fait, je m'étais trompé plus haut, dans la fonction, mais c'est corrigé
Vark Le 29/06/2002 à 10:36 je viens de tester : ma méthode est bcp plus rapide ...
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & sabrina