|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
Inscription : mai 2011 Messages : 216 ![]() |
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 :
|
||
|
|
013
|
|
|
#2 |
|
Expert Confirmé
![]() nicolas Développeur de jeux vidéo Inscription : août 2007 Messages : 2 168 ![]() |
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...
|
|
|
50
|
|
|
#3 |
![]() ![]() ![]() Alexandre LaurentÉtudiant Inscription : mai 2008 Messages : 6 560 ![]() |
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. |
|
|
10
|
|
|
#4 |
Inscription : mai 2011 Messages : 216 ![]() |
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). |
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() Inscription : février 2008 Messages : 407 ![]() |
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... |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Développeur C/C++/ASM, Windows & Linux Inscription : septembre 2009 Messages : 37 ![]() |
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 |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() |
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 |
|
|
00
|
|
|
#8 |
Inscription : mai 2011 Messages : 216 ![]() |
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. |
|
|
05
|
|
|
#9 |
|
Membre Expert
![]() ![]() |
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 |
|
21
|
|
|
#10 |
|
Membre Expert
![]() |
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 |
|
41
|
|
|
#11 | |
Inscription : mai 2011 Messages : 216 ![]() |
Citation:
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à ; |
|
|
|
02
|
|
|
#12 |
|
Membre Expert
![]() |
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 |
|
01
|
|
|
#13 |
![]() ![]() ![]() Alexandre LaurentÉtudiant Inscription : mai 2008 Messages : 6 560 ![]() |
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. |
|
|
02
|
|
|
#14 |
Inscription : mai 2011 Messages : 216 ![]() |
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 |
|
|
00
|
|
|
#15 |
![]() ![]() ![]() Alexandre LaurentÉtudiant Inscription : mai 2008 Messages : 6 560 ![]() |
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. |
|
|
01
|
|
|
#16 | |
|
Membre chevronné
![]() Inscription : mars 2011 Messages : 433 ![]() |
Citation:
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 |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com