Gl-screnshoot-tga

Soyez le premier à donner votre avis sur cette source.

Vue 3 423 fois - Téléchargée 282 fois

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

Ajouter un commentaire Commentaires
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Non c'est pas normal...la page a disparu apparemment, dommage :(
Messages postés
46
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
31 juillet 2006

j'ai essayé le lien de funto et je tombe sur un site tout écris en japonais c'est normal ?
sinon merci pour la source je vais reexploiter les headers ^^
Messages postés
40
Date d'inscription
mercredi 26 mars 2003
Statut
Membre
Dernière intervention
3 septembre 2008

ben je dois pas etre doué car chez moi ca marche pas, :/
j'ai inclus la fonction a mon projet et quand je vais voir mon screenshot,
ben c'est tout gris je comprends pas,
si quelqu'un pouvais m'aider ca serait cool.

merci d'avance :)
Messages postés
2
Date d'inscription
vendredi 21 mai 2004
Statut
Membre
Dernière intervention
27 mai 2004

c ziat di merci
Messages postés
688
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
19 mai 2005

merci !!!
Afficher les 11 commentaires

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.