Précédent   Forum des professionnels en informatique > Applications > Développement 2D, 3D et Jeux > API graphiques > OpenGL
OpenGL Forum d'entraide sur le développement en OpenGL. Avant de poster -> FAQ OpenGL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/12/2011, 17h32   #1
 
Inscription : mai 2011
Messages : 216
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : mai 2011
Messages : 216
Points : -3
Points : -3
Par défaut Problème de transparence avec OpenGL

Bonjour,

C'est pour vous prévenir que OpenGL gére trés mal le alpha ! sinon
pour ce qui concerne les textures , rien à signaler.
Idéal pour voir un labyrinthe en 3D avec texture.

Mais si vous comptez developper un jeux en 3d contenant des vertex avec des textures transparents variante ; ce n'est pas la peine .

La mauvaise gestion des transparence est du à un mauvais algorithme mais non à un bug.

Je vous joint deux images ,

A l'endroit ou l'on voit un cadre noir , eh bien normalement il devrait avoir la texture du précédent en plus avec des cercles rouge bleu en plus ;
Ce que vous voyez c'est que OpenGL n'a pas tracer le vertex qui est aprés le vertex transparent.

Je m'explique je trace le vertex traditionnel et aprés je trace un vertex transparent contenant les cercles , BIEN ENTENDU je le trace aprés et non avant.
Pour info : la texture contenant les cercles sont au format PNG.
L'image est à l'envers , mais on s'en fiche.


Sinon c'est trés rapide et les buffers de textures à l'air d'être ok à condition de bien gérer les textures.
C'est plus simple d'utiliser OpenGL que DirectX ou Direct3D.
Tester avec OpenGL Mesa et le natif , pareille ;

Voilà ;

pour info j'utilise bien :
Code :
1
2
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
Images attachées
Type de fichier : jpg Image1.jpg (192,9 Ko, 29 affichages)
Type de fichier : jpg Image2.jpg (184,0 Ko, 28 affichages)
Type de fichier : png tag2.png (46,1 Ko, 16 affichages)
Type de fichier : jpg Image3.jpg (197,6 Ko, 24 affichages)
yann458 est déconnecté   Envoyer un message privé Réponse avec citation 013
Vieux 04/12/2011, 18h50   #2
Expert Confirmé
 
nicolas
Développeur de jeux vidéo
Inscription : août 2007
Messages : 2 168
Détails du profil
Informations personnelles :
Nom : nicolas
Âge : 31
Localisation : Suède

Informations professionnelles :
Activité : Développeur de jeux vidéo
Secteur : Arts - Culture

Informations forums :
Inscription : août 2007
Messages : 2 168
Points : 3 819
Points : 3 819
sans plus d'info je parie quand même plus sur un bug dans ton code que sur un problème dans une bibliothèque utilisée par des milliers de programmes...
screetch est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 04/12/2011, 21h08   #3
Responsable 2D/3D/Jeux

 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Étudiant
Inscription : mai 2008
Messages : 6 560
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 6 560
Points : 14 057
Points : 14 057
Bonjour,

Dire qu'un algorithme d'OpenGL est faux, c'est un peu énorme vous ne trouvez pas ?
Alors, je me demande où êtes vous aller chercher quel était l'algorithme utilisé. Enfin, même en disant que vous avez trouvé l'algorithme, si vous pensez que vous en avez un meilleur, pourquoi ne pas le soumettre à nous, puis à tous ?

Bref, revenons un peu sur Terre. Je dois dire que je n'ai pas très bien compris votre problème de transparence. En regardant les images, je suis à peu près sur que c'est une histoire d'ordre d'affichage. Pour qu'une transparence fonctionne, il faut faire un tri des polygones selon leurs profondeur.
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/12/2011, 10h13   #4
 
Inscription : mai 2011
Messages : 216
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : mai 2011
Messages : 216
Points : -3
Points : -3
J'affiche d'abord le vertex normale (que lui constitue le labyrinthe)puis après le vertex transparent , et ca ne marche pas et je ne comprend pas.

Pour détailler quand j'affiche le vertex transparent , eh bien le vertex derriére (que lui constitue le labyrinthe) n'est pas afficher.
J'ai beau essayer de désactiver le DEPTH_TEST et le DEPTH sur le vertex transparent , rien n'y fait ;

Hier j'ai passer mon après midi à bidouiller OpenGL.

Ce soir je vais essayer d'afficher d'abord le vertex transparent puis le vertex normal (que lui constitue le labyrinthe).
yann458 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 10h24   #5
Membre éprouvé
 
Inscription : février 2008
Messages : 407
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : février 2008
Messages : 407
Points : 422
Points : 422
Salut,

pourrais-tu nous fournir un peu de code? On ne va pas ressortir la boule de crystal de Littlewhite tous les 3 posts...)

Sinon, comme lui et screetch, je doute très fortement que ca soit un bug intrinsèque à OpenGL...
ShevchenKik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 10h25   #6
Membre régulier
 
Avatar de NevilClavain
 
Homme
Développeur C/C++/ASM, Windows & Linux
Inscription : septembre 2009
Messages : 37
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur C/C++/ASM, Windows & Linux
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2009
Messages : 37
Points : 75
Points : 75
Il serait plus pertinent de publier un extrait de la partie de votre code posant problème, sans ça personne ne parviendra à vous aider
__________________
« Fast is fine, but accuracy is everything. »
W.Earp
NevilClavain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 10h35   #7
Membre Expert
 
Homme Sylvain DOREMUS
Ingénieur - Développeur
Inscription : juin 2005
Messages : 534
Détails du profil
Informations personnelles :
Nom : Homme Sylvain DOREMUS
Âge : 30
Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur - Développeur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2005
Messages : 534
Points : 1 066
Points : 1 066
Envoyer un message via MSN à dragonjoker59
J'aimerais aussi savoir si tu as implémenté la même chose en Direct 3D et si tu rencontres le même problème (ou pas, à te lire)
__________________
Si vous ne trouvez plus rien, cherchez autre chose...

Chef de projet (et unique exécutant pour l'instant) pour Castor 3D
dragonjoker59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 20h02   #8
 
Inscription : mai 2011
Messages : 216
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : mai 2011
Messages : 216
Points : -3
Points : -3
Je ne peux pas joindre le code , il est gros et n'est pas freeware.

Cependant j'ai resolu le probléme au 2 tiers en employant glAlphaFunc(GL_GREATED,0.01) voir image13.jpg.

Etrange ce probléme à l'air de se produire sur un endroit données (image13.jpg) de mon labyrinthe,tandis
dans les autres endroits de mon labyrinthe je n'ai pas rencontrer ce probléme.

bref, glAlphaFunc est la solution de secour et de contournement.
Images attachées
Type de fichier : jpg Image11.jpg (130,8 Ko, 20 affichages)
Type de fichier : jpg Image12.jpg (156,4 Ko, 23 affichages)
Type de fichier : jpg Image13.jpg (134,9 Ko, 25 affichages)
yann458 est déconnecté   Envoyer un message privé Réponse avec citation 05
Vieux 07/12/2011, 02h45   #9
Membre Expert
 
Programmeur
Inscription : août 2002
Messages : 1 034
Détails du profil
Informations personnelles :
Localisation : Etats-Unis

Informations professionnelles :
Activité : Programmeur

Informations forums :
Inscription : août 2002
Messages : 1 034
Points : 1 310
Points : 1 310
Envoyer un message via ICQ à LeGreg
Non ce n'est pas la solution à ton problème (elle ne fait que le cacher).

Ton problème c'est que tu n'affiches pas tes objets transparents dans le bon ordre. Il faut trier, les objets lointains d'abord, les objets proches en dernier (pour les objets opaques il vaut mieux faire l'inverse les tracer de l'avant vers l'arrière pour des raisons de ZBuffer et performance).
__________________

Mon site web | Mon blog | Mes photos | Groupe USA
> BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
> presse la touche caps lock, stp
> OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA
LeGreg est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 08/12/2011, 14h48   #10
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 795
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 795
Points : 1 062
Points : 1 062
Envoyer un message via MSN à oxyde356
mdr mais c'est quoi ce post, une review OpenGL complètement bidon ><

"Mais si vous comptez developper un jeux en 3d contenant des vertex avec des textures transparents variante ; ce n'est pas la peine ." au moins t'es un garçon plein d'humour c'est déjà ça

OpenGL et DirectX ont exactement le même comportement et il n'y a rien de faux, il y a un algo, pas parfait et bourré d'approx (si tu en trouve un parfait capable de gérer toutes les propriétés du monde réel [j'espère que tu t'y connais en particules élémentaires] en temps réel appel moi !!!). C'est à toi de te plier à ses exigences et pas l'inverse. Dire qu'il est faux parce qu'il ne fait pas ce que tu veux est erroné, il serait plus correcte de dire que tu ne sais pas comment lui faire faire ce que tu veux, dans ce cas dit ce que tu veux faire, ce que tu as essayé, donne un minimum de code pour mieux comprendre ton problème et là on pourras t'aider. C'est quand même culotter d'accuser l'API Graphique et de lui faire mauvaise presse dès que l'on rencontre un problème de base ><
__________________
Computer Graphics Universe
oxyde356 est déconnecté   Envoyer un message privé Réponse avec citation 41
Vieux 15/12/2011, 19h56   #11
 
Inscription : mai 2011
Messages : 216
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : mai 2011
Messages : 216
Points : -3
Points : -3
Citation:
Envoyé par oxyde356 Voir le message
mdr mais c'est quoi ce post, une review OpenGL complètement bidon ><

"Mais si vous comptez developper un jeux en 3d contenant des vertex avec des textures transparents variante ; ce n'est pas la peine ." au moins t'es un garçon plein d'humour c'est déjà ça

OpenGL et DirectX ont exactement le même comportement et il n'y a rien de faux, il y a un algo, pas parfait et bourré d'approx (si tu en trouve un parfait capable de gérer toutes les propriétés du monde réel [j'espère que tu t'y connais en particules élémentaires] en temps réel appel moi !!!). C'est à toi de te plier à ses exigences et pas l'inverse. Dire qu'il est faux parce qu'il ne fait pas ce que tu veux est erroné, il serait plus correcte de dire que tu ne sais pas comment lui faire faire ce que tu veux, dans ce cas dit ce que tu veux faire, ce que tu as essayé, donne un minimum de code pour mieux comprendre ton problème et là on pourras t'aider. C'est quand même culotter d'accuser l'API Graphique et de lui faire mauvaise presse dès que l'on rencontre un problème de base ><
Un review opengl complétement bidon mais je suis tout seul à developper ce jeux cependant ce labyrinthe inclut des chemins à 45° (ce qui est rare et j'en aie bavé pour générer ce genre de labyrinthe),
j'ai toujours ce probléme de transparence mais à certains endroit de mon labyrinthe.
Les vertex je ne peux pas les tracer
dans l'ordre du loin au plus prés , car ils sont stocker en bloc dans un fichier data , et je l'ai dessine par glCallList , bien sure ils sont déjà compiler.

voilà ;
yann458 est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 15/12/2011, 19h59   #12
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 795
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 795
Points : 1 062
Points : 1 062
Envoyer un message via MSN à oxyde356
Oui donc ton programme est mal conçu.
Entre le chargement des données et l'appel à la display list il faut forcément que tu fasse quelque chose.
Commence par la fragmenter ta display list au lieu de tout charger d'un seul bloc après tu pourras trier.
__________________
Computer Graphics Universe
oxyde356 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 15/12/2011, 20h01   #13
Responsable 2D/3D/Jeux

 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Étudiant
Inscription : mai 2008
Messages : 6 560
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 6 560
Points : 14 057
Points : 14 057
Sachant que les listes d'appels (call list) sont maintenant obsolètes, je vous conseille de vous orienter vers le tri des objets selon la distance avec la caméra puis d'utiliser les VBO. Ainsi, vous aurez un programme future proof et vous aurez réglé votre problème.
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 15/12/2011, 21h51   #14
 
Inscription : mai 2011
Messages : 216
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : mai 2011
Messages : 216
Points : -3
Points : -3
Oui,

Je suis passer faire un tour sur gooooogle

mais question :
les VBO sont t'il compatible avec glBindTexture et glNewTexture ???
je peux travailler sur plusieurs handle VBO par texture plaquer dans les primitives, mais je ne compte pas travailler sur texcoord sur une texture unique (trop complexes).

Je m'explique "plusieurs handle VBO par texture" : un VBO qui contient par exemple 16 primitives avec la même textures.

Peux t'on utiliser glrotate3f,gltranslatef sur les VBO ? (glDrawElements)

Merci
yann458 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 22h26   #15
Responsable 2D/3D/Jeux

 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Étudiant
Inscription : mai 2008
Messages : 6 560
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 6 560
Points : 14 057
Points : 14 057
Oui, on peut faire tout ce que vous demandez. Les VBO, c'est juste une autre méthode d'affichage.
Il faudra penser à passer aux shaders aussi
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 16/12/2011, 08h43   #16
Membre chevronné
 
Homme
Inscription : mars 2011
Messages : 433
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 433
Points : 789
Points : 789
Citation:
ce labyrinthe inclut des chemins à 45° (ce qui est rare et j'en aie bavé pour générer ce genre de labyrinthe)
Essayer de relativiser et de vous remettre en question. Des jeux incluant des faces à des angles autre que 90° sont quand même "assez nombreux".
Je suis tout à fait d'accord qu'OpenGL est assez déroutant au début, mais ce n'est pas pour autant de sa faute si vous n'y arrivez pas.
__________________
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry
pyros est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web