Connexion
Vous n'avez pas encore de compte personnel ? Vous devriez en créer un. Une fois enregistré vous aurez certains avantages, comme pouvoir modifier l'aspect du site, ou poster des commentaires signés...
Support
Activité du Site

Pages vues depuis 06/01/2019 : 13 221 968

  • Nb. de membres 367
  • Nb. d'articles 2 850
  • Nb. de forums 24
  • Nb. de sujets 13
  • Nb. de critiques 0

Top 10  Statistiques

Index du forum »»  Développement »» Problème de Blending sur MorphOS & TinyGL

Problème de Blending sur MorphOS & TinyGL#954

1Contributeur(s)
AmiDARK
2 Modérateur(s)
PapiosaurBeWorld
AmiDARK AmiDARKicon_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 NO 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 );
        glBlendFunc( GL_ONE, GL_ZERO );
        glEnable( GL_BLEND );
        glAlphaFunc( GL_NOTEQUAL, 0.0f );
        glEnable( GL_ALPHA_TEST );
        glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);


Tout simplement.

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