:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Forums Hébergés :: > OldSchool Library > Aide au développement

Aide au développement Aide sur l'utilisation d'OSLib

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 02/07/2008, 00h05   #1
Akabane87
Membre
 
Date d'inscription: 01/07/2008
Messages: 14
Par défaut Comment afficher des images sur une autre avec fond transparent ?

Bonjour à tous,
oui, je sais, le titre est un peu long , mais c'est aussi la raison pour laquelle je n'ai pas trouvé de réponses sur le net.
En fait, pour résumer la situation, j'ai besoin d'enregistrer un png de taille 128*192 ou moins selon le mode, ayant un fond transparent plus un canal alpha.
Et c'est là que se pose tout le problème...
J'ai essayé de créer une image transparente, de la passer en buffer pricipal à la place de l'écran, puis d'écrire dessus toutes mes images avant de repasser au buffer par défaut (l'écran) avant d'afficher cette image dessus. Du coup, en théorie , je n'ai qu'a envoyer cette même image à la fonction d'écriture dans un fichier png.
Bon, vous l'aurez deviné, ça ne marche pas du tout . Le problème est qu'on ne peut pas avoir une image transparente et dessiner des images dessus (ou alors je n'ai pas trouvé ). En fait je me suis aperçu que tout ce que j'affiche par dessus à la transparence donnée par la valeur du canal apha de la couleur servant à nettoyer l'image.
Sinon, j'ai bien essayé de mettre de la transparence 1 bit sur l'image, mais si je la nettoie avec cette couleur, elle n'est pas remplacée par de la transparence .

Ah, et dernier point, j'ai essayé en dernier recours de créer ma fonction d'enregistrement de png afin de remplacer la couleur de fond de l'image envoyée par de la transparence, mais vu que j'utilise le filtre bilinéaire (à cause d'un dézoom), j'ai une magnifique oréole de la couleur de fond qui reste (logique!) . C'est donc pour cela qu'il me faut absolument être capable de dessiner sur une image déjà transparente, afin de garder telle quelle le canal alpha de mes différentes images à afficher dessus .

Merci d'avance pour la solution à ce méga problème de fou qui est en train de me rendre aussi fou .

ps: pour les curieux, c'est pour mon petit Sprite Maker XP
Akabane87 est déconnecté   Réponse avec citation

Publicité

Vieux 02/07/2008, 10h39   #2
daaa57150
Membre confirmé
 
Date d'inscription: 16/05/2007
Messages: 411
Voir l'identifiant PSN
Par défaut

salut,

de base la psp ne permet pas de faire ca, je m'en suis sorti en écrivant ma propre fonction dessin d'image sur une autre image, tu peux la voir sur ce topic:
http://www.playeradvance.org/forum/s...ead.php?t=5794

topic qui se trouve dans le sous forum "OSLib", qui je pense aurait dû accueillir ton message.

voila j'espère que ca t'aidera, dis moi ce que ca donne.
__________________
Essayez mon dernier jeu sur iPhone:

daaa57150 est déconnecté   Réponse avec citation
Vieux 02/07/2008, 11h26   #3
Akabane87
Membre
 
Date d'inscription: 01/07/2008
Messages: 14
Par défaut

Merci beaucoup,
je craignais d'en arriver là, mais puisque tu me proposes gentiment ta fonction, je ne vais pas dire non . Je dois dire que je ne me sentais pas d'écrire une telle fonction simplement pour un simple portage de mon programme .
Je teste tout ça et je te dis ce qu'il en est.
(Et merci encore... au moins ta fonction aura fini par servir à quelqu'un ! )

PS: Si je n'avais pas eu à récupérer absolument une image avec fond transparent, mais simplement à afficher cette image sur l"écran, j'aurais utilisé ma méthode de bidouille habituelle : affichage du contenu de l'écran à l'endroit ou je veux afficher l'image sur cette image, et ensuite, j'affiche tout dessus, avant de tout afficher à l'écran. C'est une petite astuce assez rapide qui permet de ne plus se soucier de la transparence de fond de l'image intermédiaire .


edit: Intéressant comme résultat ... je ne comprend pas vraiment comment une telle chose a pu arriver, mais mon sprite est comment dire ... semi transparent . On voit toutes les couches par semi-transparence, ce qui fait que l'on a l'impression que le sprite est habillé avec des vetements très ... transparents ... Je vais finir par devoir sensurer des parties de la planche de sprite moi, si ça continue . Nan plus sérieusement, c'est vraiment très lent comme fonction, et cet effet de transparence est assez gênant. Je vais revenir au mode bidouille je pense. Merci quand meme pour cette fonction. Elle me servira peut être dans un futur proche

Dernière modification par Akabane87 ; 02/07/2008 à 12h30.
Akabane87 est déconnecté   Réponse avec citation
Vieux 02/07/2008, 13h57   #4
daaa57150
Membre confirmé
 
Date d'inscription: 16/05/2007
Messages: 411
Voir l'identifiant PSN
Par défaut

ah tiens, il y a encore des erreurs dans cette fonction alors je peux voir ton resultat?
__________________
Essayez mon dernier jeu sur iPhone:

daaa57150 est déconnecté   Réponse avec citation
Vieux 02/07/2008, 14h31   #5
Akabane87
Membre
 
Date d'inscription: 01/07/2008
Messages: 14
Par défaut

arf, désolé j'ai tout modifié le code. Mais imagine simplement une planche de sprite RPG Maker XP décomposée en éléments élémentaires, tel que le corps (nu), les yeux, les cheveux, le pantalon, le T-shirt et les chaussures,avec chaque élément en semi-transparence (environ 128 je pense). C'est assez violent . Surtout pour les cheveux qui sont plus clair sur toute la surface juste au dessus du crane (puisque la peau est claire). Enfin bref ça fait très voyeurisme . J'ai pas vraiment regardé ta fonction en profondeur, donc je peux pas vraiment te dire ce qui fait ça. En fait je dois dire que ça commence à me gonfler... Je pense que je vais désactiver le filtre bilinéaire et transformer tous les pixels de la couleur de fond en transparence max lors de l'enregistrement en png. Et tant pis si c'est moche . Ca fais maintenant 2 jours que je bloque la dessus et j'ai des projets en cours beaucoup plus intéressants .
C'est dommage parce-qu'il me fallait juste une fonction qui puisse afficher plusieurs images (avec canal alpha) sur une image avec fond transparent.
Akabane87 est déconnecté   Réponse avec citation
Vieux 02/07/2008, 15h20   #6
daaa57150
Membre confirmé
 
Date d'inscription: 16/05/2007
Messages: 411
Voir l'identifiant PSN
Par défaut

je connais pas sprite RPG Maker XP mais si tu veux partager les images que t'essaies de superposer je veux bien essayer parce que ca m'intrigue.
__________________
Essayez mon dernier jeu sur iPhone:

daaa57150 est déconnecté   Réponse avec citation
Vieux 02/07/2008, 15h41   #7
Akabane87
Membre
 
Date d'inscription: 01/07/2008
Messages: 14
Par défaut

normal que tu ne connaisses pas, c'est SpriteMakerXP le nom de mon programme (dernière version: 1.02). C'est en fait un générateur de sprite au format RPG Maker XP. Tu devrais le trouver facilement en téléchargement avec google (je sais pas si j'ai le droit de mettre des lien directement sur le forum et de toute façon je ne l'ai plus sous la main ). Mais de toute façon, le problème ne réside pas dans les images elles-mêmes, mais dans la façon de gérer le canal alpha de l'image png à générer. Les images de bases ont juste un fond uni sans aucun canal alpha. C'est juste lors du redimensionnement de l'image après avoir définit la couleur de fond comme transparente que le canal est créé.
Akabane87 est déconnecté   Réponse avec citation
Vieux 02/07/2008, 16h01   #8
daaa57150
Membre confirmé
 
Date d'inscription: 16/05/2007
Messages: 411
Voir l'identifiant PSN
Par défaut

ah oui c'est vrai que dans ma fonction j'avais pas géré la couleur transparente, je me basais que sur le canal alpha.
avant d'utiliser ma fonction, tu dois nettoyer la couleur transparente des images que tu dessines dessus (met à cette couleur un alpha=0) et là ca devrait marcher.
et je suppose que ton filtre bilinéaire tu l'appliques bien après nettoyage de la couleur de fond, parce que sinon, tu as bien remarqué l'oréole.
bref si tu y arrives toujours pas, je réitère ma proposition de t'aider en essayant avec tes images.
__________________
Essayez mon dernier jeu sur iPhone:

daaa57150 est déconnecté   Réponse avec citation
Vieux 02/07/2008, 18h03   #9
Akabane87
Membre
 
Date d'inscription: 01/07/2008
Messages: 14
Par défaut

Merci, c'est très gentil de ta part de me proposer de m'aider, mais je vais désactiver le filtre bilinéaire. Après tout il n'apporte pas grand chose de plus pour une image de la taille de ce que je veux obtenir.
Akabane87 est déconnecté   Réponse avec citation
Vieux 03/07/2008, 11h41   #10
daaa57150
Membre confirmé
 
Date d'inscription: 16/05/2007
Messages: 411
Voir l'identifiant PSN
Par défaut

ok comme tu veux.
__________________
Essayez mon dernier jeu sur iPhone:

daaa57150 est déconnecté   Réponse avec citation
Vieux 18/07/2008, 19h31   #11
daaa57150
Membre confirmé
 
Date d'inscription: 16/05/2007
Messages: 411
Voir l'identifiant PSN
Par défaut

j'ai corrigé ma fonction si ca t'intéresse:
http://www.playeradvance.org/forum/s...ead.php?t=5794
__________________
Essayez mon dernier jeu sur iPhone:

daaa57150 est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Publicité



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
NDS MoonShell M@cZér0 Articles et Tutos 511 26/12/2009 16h46
NDS Faire une skin pour MoonShell M@cZér0 Articles et Tutos 35 12/04/2008 02h44
NDS Comment flasher une dsl sans passcard avec un cyclods micro sd mixast Linkers CycloDS 2 11/07/2007 19h25
NDS Pirates Des Caraibes : une bombe atomique en boite Nighty Tests de jeu 11 29/11/2006 21h37


Fuseau horaire GMT +2. Il est actuellement 18h59.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince