Tom's Guide > Forum > Programmation > OpenGL : redirection vers un fichier

OpenGL : redirection vers un fichier

Forum Programmation : OpenGL : redirection vers un fichier

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Salut,
je programme en C, en utilisant OpenGL, sous Dev C++ et j'aurais voulu savoir si quelq'un sait comment redirigé l'affichage de la fenetre vers un fichier.
Ce que je veux en fait, c'est ne pas afficher la fenetre, mais la redirigé dans un fichier jpeg par exemple, merci :)

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

pour lire le frame buffer:

Code :
  1. glReadPixels(x, y, largeur, hauteur, format, type, buffer)


voilà, ça met dans buffer les pixels, après pour l'enregistrement, il te faut une lib adaptée.

Répondre à CRicky

Merci CRicky, en fait je veux pouvoir stocké une prise d'ecran dans un fichier, j'ai trouvé ce code sur le net :


#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
#include <windows.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

void glScreenCapture(const char *filename) {
GLint viewport[4] ;
int l;
glGetIntegerv(GL_VIEWPORT, viewport) ;
int x=viewport[0], y=viewport[1] ;
int width=viewport[2], height=viewport[3] ;
unsigned int lineSize = width*3 ;
unsigned char *data ;
data = (unsigned char*) malloc( height*lineSize*sizeof(unsigned char) );
glReadBuffer(GL_FRONT) ;
glReadPixels(x, y, width, height, GL_RGB, GL_UNSIGNED_BYTE, data) ;
int fd = open(filename,O_CREAT) ;
char buffer[256] ;
sprintf(buffer, "P6\n%d %d\n255\n", width, height) ;
write(fd, buffer, strlen(buffer)) ;
for (l=height-1; l>=0; --l) {
unsigned char *ptr = data + l*lineSize ;
write(fd, ptr, lineSize) ;
}
close(fd) ;
free(data) ;
}




main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(800,800);
int winid=glutCreateWindow("ma fenetre" );
glScreenCapture("ecran" );
glutMainLoop();
system("PAUSE" );
return 0;
}



Mais le fichier généré est vide, il fait 0octet.
Quelqu'un a une idée ?

Répondre à Anonyme

ça utilise bien glReadPixels ;-)

Sinon, moi j'utiliserais plutôt des fopen, fwrite, puis fflush et fclose, plutôt que ces fonctions.

Répondre à CRicky

Oui j'ai trouvé ce source grace à la fonction que tu ma dis, es que tu saurais pourquoi le fichier généré est vide ?

Répondre à Anonyme
Tom's Guide > Forum > Programmation > OpenGL : redirection vers un fichier
Aller à :

Il y a 2493 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens