Direxct x 9 d3d

Soyez le premier à donner votre avis sur cette source.

Vue 9 079 fois - Téléchargée 1 128 fois

Description

faire du 2d avec direct x9 1024x768 32 bit

cercles,ligne ,rectangle, des points, sur une surface

LPDIRECT3DDEVICE9 et lire un image comme fond

Source / Exemple :


mes fonctions

void Rectangle(int x1, int y1, int x2, int y2,      int r,int g,int b);
HRESULT loadimage(char *name,LPD3DXSPRITE &Spr,LPDIRECT3DTEXTURE9 &Texture);
void clear(int r,int g,int b);
void imax(LPD3DXSPRITE Spr,LPDIRECT3DTEXTURE9 Texture,int x,int y,int xx,int yy);
void pix(int x,int y,   int r,int g,int b);
DWORD retpix9(int x,int y);
void box(int x1,int y1,int x2,int y2, int r, int g, int b);
void circle(int xo,int yo,int rad,      int r,int g,int b);
void drawline(int x1, int y1, int x2, int y2,    int r,int g,int b);
void Cleanup();
void lock();
void unlock();

Codes Sources

Ajouter un commentaire Commentaires
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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;
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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+
Messages postés
56
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
1 février 2009

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
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.