Page 1 sur 1

bug ou inintelligence de ma part ?

Publié : dim. 08/mai/2005 1:55
par kelly
regarder bien :

Code : Tout sélectionner

If ExamineDesktops() 
dw=DesktopWidth(0)
dh=DesktopHeight(0)
dc=32
Else
dw=1024
dh=768
dc=32
EndIf 
apres, je fais :

Code : Tout sélectionner

OpenScreen(dw,dh,dc,"")
j'ouvre une bank p() :

Code : Tout sélectionner

Dim p(dw*2*dh*2)
Cette bank est lineaire ok ?
Bon, dans cette bank, j'affiche des valeurs representant les pixels de format rgb(r,v,b)
Et bien, en 1024*768, ca, ca marche :

Code : Tout sélectionner

MemVideo = DrawingBuffer() 
For u=0 To dh-1
CopyMemory(@p(u*dw*2), MemVideo+u*dw*4, dw*4)
Next
Et la verification pixel par pixel fonctionne aussi et affiche la meme chose (evidement) :

Code : Tout sélectionner

For u=0 To dh-1 : For i=0 To dw-1 : Plot (i,u,p(i+u*dw*2)) : Next : Next
Et bien, quand je force l'affichage en 800*600, la verification pixel par pixel marche mais pas la copie ligne par ligne !!!!!

---W---H---Y---??????

Publié : dim. 08/mai/2005 7:10
par comtois
tu ne tiens pas compte du DrawingBufferPitch()

si en 1024*768 en 32 bits il est égal à 1024*4 = 4096
par contre en 800x600 il est égal à 3328
et toi tu considères qu'il est à 800*4 = 3200 !! il y a un petit décalage de 128 octets :)