Afficher un pixel en direct daw

Afficher un pixel en direct daw - Programmation

Marsh Posté le 14-05-2001 à 16:03:12    

Voila, je voulais savour comment programmer une fonction putpixel(x,y,couleur), qui affiche un pixel sur une surface ddraw (fonction en C).
 
Merci

Reply

Marsh Posté le 14-05-2001 à 16:03:12   

Reply

Marsh Posté le 14-05-2001 à 16:40:02    

La méthode brutale : ecriture directe en mémoire.
 
1) DirectDrawSurface->Lock() pour verrouiller la surface dans laquelle tu veux écire.
2) Pour le moment de l'écriture en elle même, j'ai un trou de mémoire. C'est peut etre DirectDrawSurface->GetDC() pour obtenir un contexte puis une fonction de l'API windows ou une écriture directe en mémoire grâce au pointeur qui va bien.
3) On déverrouille tout.

Reply

Marsh Posté le 14-05-2001 à 16:40:56    

Merci, je vais voir ça...

Reply

Marsh Posté le 15-05-2001 à 10:13:46    

En gros tu fais un lock sur une directdrawsurface, et tu travailles directement sur la zone memoire concernee.
 
ex:
DDSURFACEDESC2 ddsd;
LPDIRECTDRAWSURFACE4 g_pDDSBack;
LPSTR pBits;
HRESULT hRet;
 
ddsd.dwSize = sizeof(ddsd);
// On initialise la struct ddsd
hRet = g_pDDSBack->Lock(NULL, &ddsd, DDLOCK_WAIT , NULL);
// On verrouille la surface de travail (ici le backbuffer)
// On obtient un ddsurfacedesc2 en retour
if (hRet != DD_OK) //Erreur;
pBits = (LPSTR) ddsd.lpSurface;
// Operations de trace directement sur pBits.
g_pDDSBack->Unlock(NULL);
// Ne pas oublier de deverrouiller
 
Je crois meme que ce code est sorti directement d'un exemple du tutorial..
 
A+
LEGREG

Reply

Marsh Posté le 15-05-2001 à 15:11:48    

Merci, maintenant ça marche, j'ai juste un petit probléme de conversion d'une couleur RBG 24 bits en une couleur RGB 16 bits (ca dépend du hardware utilisé...)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed