Page 1 sur 1
ClipSprite3D() ?
Publié : lun. 20/juil./2009 11:20
par deeph
Bonjour,
J'essaie depuis quelques temps de faire un tilemapper en PureBasic. Or j'ai besoin que la couche la plus haute soit affichée avec un effet "d'AlphaBlending".
Jusqu'à présent j'utilisai la routine "DisplayTranslucentSprite()" (couplée avec "ClipSprite()"), mais elle nous force à ce que la couleur transparente soit le noir.
Je me suis donc tourné vers les sprites 3D, mais il n'existe pas de "ClipSprite3D()" (j'ai trouvé des
bouts de codes censés faire ça mais il ne semble pas marcher...).
De plus je précise qu'il m'est impossible de modifier manuellement le canal alpha des images PNG qui servent au tilemapper (elle servent aussi à autre chose).
Bref, est-il possible de modifier la couleur transparente de la routine "DisplayTranslucentSprite()", ou à défaut de créer une routine "ClipSprite3D()" fonctionnelle ?
Publié : lun. 20/juil./2009 14:34
par djes
Euh! Ces bouts de code fonctionnent, puisque Fluid Byte les a mis à jour. Quant au tripatouillage des couches alpha, il y a des exemples sur le forum aussi pour ça. Là je n'ai pas trop le temps de regarder; juste pour dire que c'est faisable.
Publié : lun. 20/juil./2009 16:26
par deeph

ok alors c'est moi qui ai foiré mes tests. Je vais re-essayer ça tout de suite.
Sinon, c'est plus rapide d'utiliser les images, les sprites ou les sprites3D en général ?
Publié : lun. 20/juil./2009 16:39
par Anonyme
Code : Tout sélectionner
TransparentSpriteColor( -1 ,255,0,255 )
DisplayTransparentSprite(ID , X, Y )
Tout les sprites aurons la couleur $FF00FF (mauve) transparente.
@+
Publié : lun. 20/juil./2009 17:16
par deeph
Cpl.Bator > Oui mais y'a pas d'effet "AlphaBlending".
Mais de toute façons j'ai réussis

(enfaite "ClipSprite3D()" ne change pas automatiquement la taille du sprite comme "ClipSprite()", il faut utiliser "ZoomSprite3D()") :
http://www.mirari.fr/ua2S
Merci !
Publié : lun. 20/juil./2009 17:51
par Thyphoon
beauregard m'a trouvé ça il y a peu de temps :
http://www.purebasic.fr/english/viewtop ... ipsprite3d
moi ce qui me manque c'est plus un usebuffer3D()
Publié : lun. 20/juil./2009 18:36
par deeph
C'est vrai qu'un "UseBuffer3D()" permettrait d'optimiser encore ce que je veux faire (une seule sprite3D représentant la map que j'afficherai lors du scroll, au lieu d'avoir à redessiner la portion de la map à chaque fois).
Publié : lun. 20/juil./2009 18:38
par Thyphoon
deeph a écrit :C'est vrai qu'un "UseBuffer3D()" permettrait d'optimiser encore ce que je veux faire (une seule sprite3D représentant la map que j'afficherai lors du scroll, au lieu d'avoir à redessiner la portion de la map à chaque fois).
Moi j'utilise les sprites 3D pour tout ! mais mon problème c'est pour faire les ombres... qui comme le UseBUGGER3D n'existe pas s'affiche aussi sur le ciel !!

j'ai pas regardé sur les souhaits du forum anglais si la suggestion avait été faite !!
Publié : lun. 20/juil./2009 18:45
par deeph
Publié : lun. 20/juil./2009 18:58
par Thyphoon
oui j'ai vu j'ai remonté le sujet ...on verra bien ...
Publié : lun. 20/juil./2009 19:28
par djes
Pfiou, je ne comprends rien ou presque à ce que vous demandez. Le problème de typhoon pour les ombres, c'est qu'il ne peut pas les dessiner directement sur le sprite3d, c'est ça? Mais ça ne sert à rien de procéder comme ça. Il est plus simple d'utiliser un sprite3d rien que pour les ombres, avec une couche alpha, et de l'afficher avant. Je ne vois vraiment pas où est le problème...
Et puis mettez des petits bouts de code, ce sera plus simple pour répondre quand même...
Publié : lun. 20/juil./2009 20:15
par Thyphoon
djes a écrit :Pfiou, je ne comprends rien ou presque à ce que vous demandez. Le problème de typhoon pour les ombres, c'est qu'il ne peut pas les dessiner directement sur le sprite3d, c'est ça? Mais ça ne sert à rien de procéder comme ça. Il est plus simple d'utiliser un sprite3d rien que pour les ombres, avec une couche alpha, et de l'afficher avant. Je ne vois vraiment pas où est le problème...
Et puis mettez des petits bouts de code, ce sera plus simple pour répondre quand même...
j'en ai parlé là car le sujet m'y a amener, mais j'ai pas encore de code pour montrer ça ne serait tarder (il y en a un mais trop lourd a coller pour une demo) .... Je vais essayer d'expliquer. J'affiche le ciel ...j'affiche des murs, j'affiche des ombres, et mon personnages... et bien l'ombre sera dessiné aussi sur le ciel lorsq u'on sort des parties ou il y a il n'y a plus de mur. or il ne faudrait pas. je pense avoir trouvé une solution mais j'aurais besoin d'un UseBuffer3d... mais bon promis je faire un sujet la dessus avec un code...mais là c'est trop tôt ...
