Votre question

OpenGL : redirection vers un fichier

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
Anonyme
8 Juin 2006 23:13:19

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 :) 

Autres pages sur : opengl redirection vers fichier

a b L Programmation
9 Juin 2006 00:20:09

pour lire le frame buffer:
  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.
Anonyme
9 Juin 2006 15:23:28

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 ?
Contenus similaires
Anonyme
9 Juin 2006 20:40:27

Petit up :bounce: 
a b L Programmation
9 Juin 2006 21:01:50

ça utilise bien glReadPixels ;-)

Sinon, moi j'utiliserais plutôt des fopen, fwrite, puis fflush et fclose, plutôt que ces fonctions.
Anonyme
9 Juin 2006 23:06:23

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 ?
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS