website logo
Auteur
avatar
thellier

Forum » » Création-Développement » » Comment capturer un écran en C ?


Posté : 16-03-2014 18:53 icone du post

Salut

c'est ton BytesPerRow qui est faux = cette valeur s'applique a TON buffer RGB et non pas la bitmap source
c'est justement parce que l'os ne sait pas comment gérer un simple buffer qu'il faut au moins lui dire la taille d'une ligne du buffer
(Toi t'as jamais utilise le blitter )
Pour la bitmap source par contre l'OS connait sa taille et format = inutile de s'en préoccuper (sauf si 8 bits + palette ==> readpixelarray8)

Enleve tout ça
profondeur = p96GetBitMapAttr(monrastport->BitMap, P96BMA_BITSPERPIXEL);

formatRGB = p96GetBitMapAttr(monrastport->BitMap, P96BMA_RGBFORMAT);

switch (formatRGB)
{
case RGBFB_R5G6B5:
case RGBFB_R5G5B5:
bpp = 2;
break;

case RGBFB_R8G8B8:
case RGBFB_B8G8R8:
bpp = 3;
break;

case RGBFB_A8R8G8B8:
case RGBFB_A8B8G8R8:
case RGBFB_R8G8B8A8:
case RGBFB_B8G8R8A8:
bpp = 4;
break;
}



et mets juste
profondeur =3;

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1821&forum=14