1

Yop à tous !

voici mon petit problème :

Je développe sur PSP en C++ avec GU pour la 3D.

J'arrive à faire tout ce que je veux sauf un point :

J'ai une image PNG 32 bits (format RGBA 8888) valide que j'utilise comme texture.

J'ai vérifié, il me lit bien l'image, ainsi que les 4 canaux RGBA.

quand j'applique ma texture à une face, il me l'affiche tout à fait bien, sauf qu'il ne prend pas en compte le canal Alpha => Des zones que je voudrais transparentes s'affichent en noir...

j'utilise le code suivant :

	sceGuEnable(GU_TEXTURE_2D);
	sceGuTexFunc( GU_TFX_MODULATE, GU_TCC_RGBA );
	sceGuTexFilter( GU_LINEAR, GU_LINEAR );
	sceGuTexScale( 1.0f, 1.0f );
	sceGuTexOffset( 0.0f, 0.0f );
	sceGuTexMode( GU_PSM_8888, 0, 0, Texture_List[id].swizzled);
	sceGuTexImage( 0, Texture_List[id].sizeX, Texture_List[id].sizeY, Texture_List[id].sizeX, Texture_List[id].data);
	sceGuAmbientColor(0xffffffff);
	sceGuTexEnvColor(0xffffff);
	sceGumDrawArray(GU_TRIANGLES, GU_TEXTURE_32BITF|GU_COLOR_8888|GU_VERTEX_32BITF|GU_TRANSFORM_2D, 6*strlen(txt), 0, Ecrire_chr);


quelqu'un aurait une idée ???
Ancien pseudo : lolo

2

La PSP en est-elle capable ?
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3

bah vi quand même... smile

c'est utilisé par exemple pour écrire avec sa propre fonte, ou faire des "sprites" 3D
Ancien pseudo : lolo

4

Ok
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5

est ce que ça marche mieux si tu remplaces GU_TFX_MODULATE par GU_TFX_BLEND ?
edit: ah, non ça serait GU_TFX_DECAL plutot
avatar

6

GU_TFX_MODULATE
Cv=Ct*CfTCC_RGB: Av=AfTCC_RGBA: Av=At*Af
GU_TFX_DECALTCC_RGB: Cv=Ct,Av=AfTCC_RGBA: Cv=Cf*(1-At)+Ct*At Av=Af
GU_TFX_BLENDCv=(Cf*(1-Ct))+(Cc*Ct)TCC_RGB: Av=AfTCC_RGBA: Av=At*Af
GU_TFX_REPLACECv=CtTCC_RGB: Av=AfTCC_RGBA: Av=At
GU_TFX_ADDCv=Cf+CtTCC_RGB: Av=AfTCC_RGBA: Av=At*Af


avec :
* Cv - Color value result
* Ct - Texture color
* Cf - Fragment color
* Cc - Constant color (specified by sceGuTexEnvColor())

du coup ca serait peut-etre plus GU_TFX_REPLACE qu'il faudrait prendre non ?
Ancien pseudo : lolo

7

Vérifie les points suivants:
1) Activer le blending (bêtement): sceGuEnable(GU_BLEND);
2) Définir la fonction de calcul du blending (pixelDest = (1 - a) * pixelDest + a * pixelSrc): sceGuBlendFunc(GU_ADD, GU_SRC_ALPHA, GU_ONE_MINUS_SRC_ALPHA, 0, 0);
3) (Ca c'est bon) Définir l'opération entre la couleur extraite de la texture et la couleur du pixel s'il était non texturé: sceGuTexFunc(GU_TFX_MODULATE, GU_TCC_RGBA);
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

8

ok merci, je vais vérifier ca smile
Ancien pseudo : lolo

9

GU_TFX_DECAL correspond à la formule de l'alpha blending
avatar

10

rah quel con, j'avais pas fait attention à sceGuBlendFunc !!!

j'avais mis ca : sceGuBlendFunc( GU_ADD, GU_FIX, GU_FIX, 0xff888888, 0xff888888 );

forcement, c'était normal que ca foire !

merci beaucoup !!!! ca marche nikel maintenant !

heart calin heart calin heart calin heart calin heart calin heart


Ancien pseudo : lolo

11

Faudrai que je m'y mettre a la prog graphique sur PSP moi...
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

12

surtout que si tu sais déjà en faire sur PC (en openGL par exemple), c'est vraiment ressemblant smile
Ancien pseudo : lolo

13

Je pourrais surtout m'amuser a porter mon emu sur PSP (oui c'est pas ce qui manque c'est sur wink) surtout qu'il me semble que'lle a quelques particularitée sur la gestion mémoire que les PC & co n'ont pas (accès direct aux texture en mémoire par exemple, idéal pour un emu ^^)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

14

Si tu veux une idée de truc intéressant à faire - peut être inutile dans le cas de l'émulation NES c'est vrai parce qu'un rendu soft est relativement simple à réaliser - c'est de gérer l'affichage en hardware wink
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

15

Non c'est pas interessant en hard, car ça empecherais d'émuler correctement la NES (oui afficher des sprites n'est pas correct car la nes est scanline based et non sprite based
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

16

Bah ça ne cause pas vraiment de problème ça. Après c'est à toi de voir si quelque chose a changé d'une scanline à une autre et redessiner par dessus à partir de celle-ci si c'est nécessaire par exemple.
Bien sûr dans certains cas (par exemple une modif qui t'oblige à redessiner tout à chaque ligne) ce sera très peu performant.
Après y'a certains trucs que tu ne pourras pas forcément émuler, comme par exemple la sprite limit. Encore que ça tu peux manager. C'est surtout un problème pour les consoles plus évoluées (tu n'as pas de shaders, donc par exemple si l'effet de transparence que tu veux émuler n'est pas supporté, tu l'as dans l'os).
Cela dit je suis d'accord avec toi que dans le cas de la NES ça a assez peu d'intérêt, c'était surtout pour le défi que je disais ça, tant qu'à faire un truc sur PSP autant aller jusqu'au bout ^^
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741