Bonjour,
J'ai crée une scène 3D avec OpenGL, et j'ai untilisé un simple menu Glut pour la manipulation de la scène.
Je veux savoir, comment capturer l'image avec OpenGL et la sauvegarder au format bmp?
Merci
Bonjour,
J'ai crée une scène 3D avec OpenGL, et j'ai untilisé un simple menu Glut pour la manipulation de la scène.
Je veux savoir, comment capturer l'image avec OpenGL et la sauvegarder au format bmp?
Merci
A voir, mais la fonction glreadpixel peut peut être t'aider?
Bonsoir,
avec gl_readpixels tu peux récupérer les pixels de l'écran dans une structure ou assimilée (RGB, RGBA, ... y'a plusieurs paramètres possibles).
Ensuite, à toi de connaître le format de fichier et l'encodage nécessaire pour l'enregistrer correctement.
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
Bonjour,
En effet, la fonction glReadPixels() est la première et la solution la plus simple. Mais, j'ose croire qu'elle est légèrement lente.
Toutefois, vous pouvez aussi utiliser les Pixel Buffer Object (PBO) pour effectuer votre rendu dans un buffer et le récupérer coté CPU (pour en faire ce que vous voulez).
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Bonjour,
Merci pour votre aide,
J'ai met le code suivant pour capturer l'écran à l'aide de la fonction glReadPixels
Cette fonction a pour objectif de récupérer tous les pixels de l'image, mais comment les sauvegarder dans une format bmp ou autre format?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 glReadBuffer(GL_BACK); data = malloc(GL_RGBA * 500 * 500); if( data ) { glReadPixels(0, 0, 500, 500, GL_RGBA, GL_UNSIGNED_BYTE, data); }
Pour la sauvegarde, il suffit d'écrire un fichier sur le disque. Le BMP reste le format un des plus facile à prendre en main
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
J'ai travaillé avec les fichiers texte seulement, donc j'ai aucune aidé sur la création d'un fichier image, est ce que vous pouvez me donner plus de détail, s'il vous plaît?
Il faut ouvrir le fichier en mode binaire, ensuite écrire l'entête du fichier (description du fichier image) et ensuite écrire les données de couleur (RGB(A))
Il y a plein d'exemple. La wiki est pas mal complète -> http://en.wikipedia.org/wiki/BMP_file_format
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
J'ai met ce code:
data est un pointeur de type GLvoid, et fputc prend un entier comme paramètre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 glReadBuffer(GL_BACK); data = malloc(GL_RGBA * w * h); if( data ) { glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, dat); } sprintf(file,"image.bmp",cpt); if ((img = fopen(file,"w")) != NULL) { for (j=h-1;j>=0;j--) { for (i=0;i<w;i++) { fputc(data[3*j*h+3*i+0],fptr); fputc(data[3*j*h+3*i+1],fptr); fputc(data[3*j*h+3*i+2],fptr); } } } fclose(fptr); counter++;
Comment corriger l'erreur?
Partager