Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Sondage

Es ce possible d'enregistrer le rendu entier avec sa résolution optimale?

Oui
2 (100%)
Non
0 (0%)
Peut-être
0 (0%)

Total des votants: 2

Auteur Sujet: .Capture()[résolu]  (Lu 2839 fois)

0 Membres et 1 Invité sur ce sujet

elhant1

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
.Capture()[résolu]
« le: Décembre 23, 2013, 01:21:44 pm »
Bonjour,

J'essaye de créer un éditeur de map qui enregistre le fichier concernée en format .png. Pour cela il faut que je puisse sauvegarder le contenu du renderwindow. J'ai découvert la fonction .capture() et j'ai donc utilisé la syntaxe(vb.net) suivante:
Citer
rendu.Capture().SaveToFile("GFX\map.png")
Cependant j'ai un problème car la taille de ma map est supérieure à la résolution de ma form, dans mon client j'utilise donc une vue. Or la fonction .Capture() n'enregistre que la partie du rendu active. J'ai essayé d'agrandir ma vue de manière à afficher l'intégralité de ma map mais le fichier s'enregistre toujours avec une résolution déformée, c'est-à-dire avec la résolution réelle d'affichage alors que j'aimerai que mon image ait la taille exacte de la résolution virtuelle de mon rendu.
 
Comment enregistrer le rendu entier dans sa résolution virtuelle (non transformée pour correspondre à la taille de l'écran et de la fenêtre)?

Merci pour votre aide.
« Modifié: Décembre 28, 2013, 12:24:03 pm par elhant1 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : .Capture()
« Réponse #1 le: Décembre 23, 2013, 07:39:15 pm »
Fais un rendu intermédiaire dans une render-texture, et sauvegarde-la au lieu de capturer le contenu de ta fenêtre. Attention cependant à la taille max de texture autorisée par les cartes graphiques (ça peut être aussi bas que 512x512 sur les vieilles cartes Intel).

Et pourquoi veux-tu sauvegarder une map complète sous forme de grosse image ? C'est assez bizarre comme façon de faire.
Laurent Gomila - SFML developer

elhant1

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : .Capture()
« Réponse #2 le: Décembre 23, 2013, 10:48:16 pm »
Je vais essayer ça.
Pour l'instant mon client créé la map à partir d'une image "pixélisée". Chaque pixel d'une certaine couleur correspond à un "bloc"(tile) de 32/32. Mon client transforme à chaque boucle le pixel donné par le bloc correspondant . Ainsi mon éditeur de map peut être n'importe quel éditeur d'image mais je pense qu'il serait plus optimisé d'afficher directement l'image de la map, une image cependant plus longue à créer puisqu'il faudrait placer chaque bloc de 32 pixels sur 32. Ainsi j'aimerai simplement créer un logiciel qui transformerait ma map "pixelisée" en un fichier image avec les blocs de 32/32 pour éviter que ce soit le client qui fasse cela à chaque boucle. En fait c'est simplement une technique pour accélérer un peu le mapping.

elhant1

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : .Capture()
« Réponse #3 le: Décembre 24, 2013, 01:27:43 pm »
Comment puis je sauvegarder le rendu d'une renderTexture, je ne trouve de méthode correspondante?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : .Capture()
« Réponse #4 le: Décembre 24, 2013, 04:40:48 pm »
rt.getTexture().copyToImage().saveToFile("...");
Laurent Gomila - SFML developer

elhant1

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : .Capture()
« Réponse #5 le: Décembre 24, 2013, 04:43:34 pm »
Ok merci ça marche.