Direct draw pixel 8,16 ou 32 bits test

Soyez le premier à donner votre avis sur cette source.

Vue 6 481 fois - Téléchargée 360 fois

Description

Mon premier program en direct x

3 fonction qui marche
void pix(int x,int y,int r,int g,int b);
void fill(int r,int g,int b);
void circle(int xo,int yo, int rad,int r,int g,int b);

permet de mettre l ecran en mode plein ecran

#define X 640
#define Y 480

changer le X ey Y par le mode que vous vouler
#define X 320
#define Y 240

dans Init(X,Y,32);

et le bit de couleur que vous voulez utiliser
Init(X,Y,16); ou Init(X,Y,8);

Source / Exemple :


void pix(int x,int y,int r,int g,int b)
{

if(r<0) r=0;
if(g<0) g=0;
if(b<0) b=0;

if(r>255) r=255;
if(g>255) g=255;
if(b>255) b=255;

if(y>Y) y=Y-1;
if(x>X) x=X-1;
if(y<0) y=1;
if(x<0) x=1;

UCHAR *primary_buffer = (UCHAR *)Ddsd.lpSurface;   

if (pixel_format == 32)
   {
         DWORD color = _RGB32BIT(0,r, g, b);

  • ((DWORD *)(primary_buffer + x*4 + y*Ddsd.lPitch)) = color;
} else if (pixel_format == 24) { ((primary_buffer + x*3 + y*Ddsd.lPitch))[0] = r; ((primary_buffer + x*3 + y*Ddsd.lPitch))[1] = g; ((primary_buffer + x*3 + y*Ddsd.lPitch))[2] = b; } else if (pixel_format == 16) { USHORT color = _RGB16BIT565(r, g, b);
  • ((USHORT *)(primary_buffer + x*2 + y*Ddsd.lPitch)) = color;
} else { UCHAR color = r; primary_buffer[x + y*Ddsd.lPitch] = color; } }

Conclusion :


reste qu a faire un test de vitesse...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

metanil
Messages postés
51
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
13 novembre 2007
-
Brunews > de Juju : "en plus..." !
cs_juju12
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4 -
En plus ton lien prouve rien du tout; désassemble voir une fonction void et tu verras bien.
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16 -
stp, cessons de polluer ce code avec des commentaires stériles.
Si tu a des doutes sur l'emploi de l'asm depuis le C tu te reportes à mes sources ou tu poses des questions sur le forum.
metanil
Messages postés
51
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
13 novembre 2007
-
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16 -
ah bon, c'est nouveau ç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.