Bonjour à tous,
J'utilise le mode 320x240x16 et je veux juste dessiner un rectangle rempli à l'écran.
Le mode de couleurs utilisé est 565. Voici la méthode :
Cela marche nickek sur mon PC, mais sur celui d'un pote, seulement la moitié du rectangle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 void DrawRectangle(int left, int top, int length, int height, WORD color) { LockSurface(); int shift = 320 - length; WORD *ptr = surface_pointer + top * 320 + left; for (int y = 0; y < height; ++y) { for (int x = 0; x < length; ++x) *ptr++ = color; ptr += shift; } ReleaseSurface(); } J'utilise les méthodes LockSurface et ReleaseSurface pour obtenir un pointeur sur la surface DirectDraw : BOOL LockSurface() { DDSURFACEDESC2 ddsd; dsd.dwSize = sizeof(ddsd); HRESULT hr = g_backSurface->Lock(NULL, &ddsd, DDLOCK_WAIT, NULL); surface_pointer = (WORD *) ddsd.lpSurface; return hr == DD_OK; } void ReleaseSurface() { g_backSurface->Unlock(NULL); }
est remplie et je ne comprends pas pourquoi. Bien entendu, j'ai pensé à des incompatibilités
au niveau du mode graphique et j'ai réalisé quelques tests sur son PC : son mode d'encodage
est aussi 565 et son pitch vaut aussi 640.
Est-ce que avez idée de ce qui peut se passer ?
Merci d'avance,
Mark
[Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]
Partager