Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 1 févr. 2008 à 13:56
Ben non, c'est toujours faux, les testes a faire sont :
pour la fonction pix:
if( x>= X || x <0 ) return;
if( y>= Y || y <0 ) return;
et pour la fonction retpix:
if( x>= X || x < 0 ) return 0;
if( y>= Y || y < 0 ) return 0;
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 31 janv. 2008 à 17:59
Ben ya besoin de regarder bien lontemps ton code pour voir que la fonction pix avec comme parametre x=0 va quitter cette fonction sans avoir ecrit le pixel. ( 0 <= 0 ) est vrai.
A+
f_l_a_s_h_b_a_c_k
Messages postés56Date d'inscriptionvendredi 14 avril 2006StatutMembreDernière intervention 1 février 2009 31 janv. 2008 à 17:18
je sais y a plein bug a corriger j essay juste de faire du directx 9 sans fonction compliquer
coordonnees (0,0) je vais regarder vais si sa plante pas...
essayer ca pour return pixel ses mieux
separe les 3 couleur
void retpix(int x, int y, int &r, int &g, int &b, int &a)
{
unsigned long v = ((unsigned long *)Pitch32 * y + x;
b = v & 0x000000FF;
g = (v & 0x0000FF00) >> 8;
r = (v & 0x00FF0000) >> 16;
a = (v & 0xFF000000) >> 24;
}
je vais poster un update plus tard
avec un blit ou sprite pour faire des jeux 2d sans se caser trop la tete
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 31 janv. 2008 à 10:35
Salut
Dans ta fonction Pix:
void pix(int x,int y, int r,int g,int b)
{
if( x>= X || x <=0 ) return;
if( y>= Y || y <=0 ) return;
if( Pitch32 * y + x >X*Y) return;
pData[ Pitch32 * y + x ] = D3DCOLOR_XRGB( r, g, b );
}
Pourquoi n'a t'on pas le droit de dessiner un pixel aux coordonnees (0,0)?
et dans la fonction suivante:
DWORD retpix(int x,int y) //return pixel
{
if( x> X || x < 0 ) return 0;
if( y> Y || y < 0 ) return 0;
if( Pitch32 * y + x >X*Y) return 0;
return pData[ Pitch32 * y + x ];
}
essaye de lire un pixel aux cordonnees (X,1) (en dehors de ton tab), pas de return, plantage assure...
1 févr. 2008 à 13:56
pour la fonction pix:
if( x>= X || x <0 ) return;
if( y>= Y || y <0 ) return;
et pour la fonction retpix:
if( x>= X || x < 0 ) return 0;
if( y>= Y || y < 0 ) return 0;
31 janv. 2008 à 17:59
A+
31 janv. 2008 à 17:18
coordonnees (0,0) je vais regarder vais si sa plante pas...
essayer ca pour return pixel ses mieux
separe les 3 couleur
void retpix(int x, int y, int &r, int &g, int &b, int &a)
{
unsigned long v = ((unsigned long *)Pitch32 * y + x;
b = v & 0x000000FF;
g = (v & 0x0000FF00) >> 8;
r = (v & 0x00FF0000) >> 16;
a = (v & 0xFF000000) >> 24;
}
je vais poster un update plus tard
avec un blit ou sprite pour faire des jeux 2d sans se caser trop la tete
31 janv. 2008 à 10:35
Dans ta fonction Pix:
void pix(int x,int y, int r,int g,int b)
{
if( x>= X || x <=0 ) return;
if( y>= Y || y <=0 ) return;
if( Pitch32 * y + x >X*Y) return;
pData[ Pitch32 * y + x ] = D3DCOLOR_XRGB( r, g, b );
}
Pourquoi n'a t'on pas le droit de dessiner un pixel aux coordonnees (0,0)?
et dans la fonction suivante:
DWORD retpix(int x,int y) //return pixel
{
if( x> X || x < 0 ) return 0;
if( y> Y || y < 0 ) return 0;
if( Pitch32 * y + x >X*Y) return 0;
return pData[ Pitch32 * y + x ];
}
essaye de lire un pixel aux cordonnees (X,1) (en dehors de ton tab), pas de return, plantage assure...
Fait attention aux bornes
A+