DIREXCT X 9 D3D

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 31 janv. 2008 à 10:35
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 1 févr. 2008 à 13:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45571-direxct-x-9-d3d

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
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és 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
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és 56 Date d'inscription vendredi 14 avril 2006 Statut Membre Derniè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és 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
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...

Fait attention aux bornes

A+
Rejoignez-nous