Gl-screnshoot-tga

Description

voila la fonction suivante sert pour faire des captures d'écran sous opengl et les enregistre sous format TGA.

vous pouvez l'inclure dans un evenement clique de touche par exemple F11 pour la capture d'ecran.

la source presente ici et mon ancien prog Electronic-Ball mais avec la fonction de capture ecran essayer la touche 5 :
  • -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-


void MAKEPICTURE()
{
FILE * file;

//Cherche le nom a suavegarder soit PICTURE1 ou PICTURE2 [ de 1 jusqu'a 2000 ]
char filename[32];

for(int i=0; i<2000; i++)
{
sprintf(filename, "PICTURE%03d.tga", i);

//essey d'ouvrir ce fichier si c impossible alors en le crer pour sauvegarder l'image
file=fopen(filename, "rb");

if(!file)
{
break;
}

//sinon si le fichier existe alors en continue a chercher le suivant
fclose(file);

}

/*Structure de des fichiers TGA*/
GLubyte TGAheader[12]={0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // entete TGA non compresser
GLubyte infoHeader[6];

unsigned char * data=new unsigned char[4*WHIDTH*HEIGHT];

//Lire les donné depuis l'écran
glReadPixels(0, 0, WHIDTH, HEIGHT, GL_RGBA, GL_UNSIGNED_BYTE, data);

//les donné doivent etre au format RGB [ RED , GREEN , BLUE]
//echange le Blue et le Red
for(i=0; i<(int)WHIDTH*HEIGHT*4; i+=4)
{
//repete le XOR pour echangé les bytes 0 et 2
data[i] ^= data[i+2] ^= data[i] ^= data[i+2];
}

//ouvrir le fichier
file = fopen(filename, "wb");

//Enregistre l'entete
fwrite(TGAheader, 1, sizeof(TGAheader), file);

//Enregiste les entetes
infoHeader[0]=(WHIDTH& 0x00FF);
infoHeader[1]=(WHIDTH & 0xFF00) >> 8;
infoHeader[2]=(HEIGHT& 0x00FF);
infoHeader[3]=(HEIGHT & 0xFF00) >> 8;
infoHeader[4]=32;
infoHeader[5]=0;

//Enregistre les info sur le header
fwrite(infoHeader, 1, sizeof(infoHeader), file);

//Enregistre l'image
fwrite(data, 1, WHIDTH*HEIGHT*4, file);

fclose(file);

}
  • -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

Codes Sources

A voir également

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.