website logo
Auteur
avatar
AmiDARK

Forum » » Développement » » Problème de Blending sur MorphOS & TinyGL


Post� : 17-01-2012 20:12 icone du post

***************************** FIXED *****************************
Salut.

J'ai un petit "sushi" de code ...
Lorsque je veux activer le fait que le noir d'une texture devienne transparent, je mets une variable à 1.
Le système fonctionne parfaitement sur AmigaOS4 et est apparement, ce qui est conseillé dans les divers sites parlant de l'OpenGL ...
Cependant, sur MorphOS, j'ai un résultat assez particulier, l'objet sur lequel j'applique cette "transparence du noir" ... n'apparait pas à l'écran ... Si je désactive cette "transparence du noir", l'objet réapparait.

Voici la partie du code qui valide le type de rendu avec/sans la transparence du noir :

    switch( MyObjectMesh->Transparency ){
      case 0:                              Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â // 0 - First Phase rendering N O ALPHA
        glEnable( GL_BLEND );
        glBlendFunc( GL_ONE, GL_ZERO );
        glDisable( GL_ALPHA_TEST );
        glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE  );
        glTexEnvf( GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE ) ;
        break;
      case 1:                              Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â // 1 - First Phase WITH ALPHA  MASKING
        glEnable( GL_BLEND );
        glEnable( GL_DEPTH_TEST );
        glEnable( GL_ALPHA_TEST );
        glAlphaFunc( GL_NOTEQUAL, 0 );
        glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
        glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE  );
        glTexEnvf( GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE ) ;
        break;


J'ai essayé plusieurs combinaisons, désactiver l'ALPHA_TEST, etc ... l'objet reste invisible.

Quelqu'un aurait une idée de ce qui cause soucis ?
Merci par avance.

EDIT.
J'ai réussi à le fixer en utilisant ceci :

        glEnable( GL_DEPTH_TEST& nbsp;);
        glBlendFunc( GL_ONE,&nbs p;GL_ZERO );
        glEnable( GL_BLEND  );
        glAlphaFunc( GL_NOTEQUAL , 0.0f );
        glEnable( GL_ALPHA_TEST& nbsp;);
        glTexEnvi(GL_TEXTURE_ENV,&nbs p;GL_TEXTURE_ENV_MODE, GL_MODULATE);


Tout simplement.

***************************** FIXED *****************************
@ +
AmiDARK

Cet article provient de Meta-MorphOS
https://www.meta-morphos.org/viewtopic.php?topic=954&forum=52