IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

[DEBUTANT]Affichage de textures superposées avec transparence


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Par défaut [DEBUTANT]Affichage de textures superposées avec transparence
    Salut à toutes et à tous,

    Je suis nouveau sur OpenGL, mon quotidien c'est plutôt le développement C++ (avec Qt). Bref, je suis en train de développer une application et j'ai besoin d'OpenGL pour arriver à les fins.

    Ce que je dois faire est :
    * afficher des objets superposés dont la forme est un carré
    * appliquer une texture sur chaque carré
    * contrôler le niveau de transparence de chaque objet individuellement
    * faire en sorte que tout soit optimiser au mieux

    Pour le moment j'arrive à afficher des objets représentés par des carrés et appliquer une texture dessus ... j'ai fait un test avec la transparence mais malheureusement les textures n'avaient plus de couleur (certainement un mauvais paramètre passé à la fonction glBlendFunc, enfin je pense).

    Par contre je ne vois pas comment rendre la texture transparente, et je ne sais pas non plus si il est possible d'avoir un contrôle sur le niveau de transparence des objets.

    D'avance merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pour glBlendFunc il faut utiliser SRC_ALPHA et ONE_MINUS_SRC_ALPHA (me souviens plus des noms exacts).

    Ensuite pour régler la transparence, tu peux utiliser un glColor(1, 1, 1, alpha) avant chaque tracé de cube.

    Et attention à bien les afficher du plus lointain au plus proche.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Par défaut
    Ok, je vais regarder pour les paramètres de glBlendFunc ... de mémoire c'est quelque chose d'équivalent à ceux que tu cites.

    Ok aussi pour afficher du plus loin au plus proche, mais j'ai quelques questions à ce sujet :
    * est ce qu'on doit faire appel à la fonction glClearColor avant d'afficher les objets ? Si oui, je pense qu'on peut aussi jouer sur le facteur d'opacité ?
    * pour l'appel de la fonction glColor(1, 1, 1, alpha), on est obligé de spécifier les composantes rgb ? Il n'existe pas une fonction permettant de spécifier uniquement le facteur d'opacité ?

    Je n'ai pas le temps de faire les tests aujourd'hui, je regarderai ça aussi rapidement que possible et mettrai le tag résolu une fois le test effectué.

    En attendant, merci pour ta réponse.

    PS : super ton article sur les moteurs 3D

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    est ce qu'on doit faire appel à la fonction glClearColor avant d'afficher les objets ? Si oui, je pense qu'on peut aussi jouer sur le facteur d'opacité ?
    glClearColor sert à spécifier la couleur d'effacement qui sera utilisé par glClear ; pas grand chose à voir avec ton problème

    pour l'appel de la fonction glColor(1, 1, 1, alpha), on est obligé de spécifier les composantes rgb ? Il n'existe pas une fonction permettant de spécifier uniquement le facteur d'opacité ?
    Non, la composante alpha fait partie intégrante de la couleur. Est-ce vraiment un problème ?

    J'imagine qu'il existe d'autres moyens de spécifier un alpha par objet (avec DirectX il y a au moins 3 méthodes différentes), mais là c'est la seule simple qui me vienne à l'esprit. Donc si ça pose problème (a priori je ne vois pas pourquoi) on pourra toujours se pencher sur une autre méthode.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Par défaut
    Ok, ça ne devrait pas poser de problème, je testerai et remonterai rapidement le résultat.

    Toujours à propos de glClearColor ... tu m'as dit qu'il est impératif d'afficher les objets du plus loin au plus proche, dans mon esprit le "background" est ce qu'il y a de plus loin et la fonction glClearColor permet d'effacer mais finalement ça se traduit par un affichage d'une couleur (je sais, j'ai l'esprit un peu tordu), par conséquent je me demande si il est nécessaire de dessiner le fond d'abord et ensuite les objets ou est ce qu'il y a une autre façon de faire ... d'où ma question. Mais bon, je pinaille, je ne pense pas que ça puisse avoir une importance.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Effectivement je vois pas trop pourquoi tu poses cette question

    Si tu n'effaces pas ton backbuffer avant de rendre tes objets, tu auras des restes de la frame précédente. A moins bien sûr que tes objets ne couvrent tout le backbuffer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Affichage d'une image avec transparence
    Par tchoupie.m dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 12/07/2012, 12h36
  2. probleme avec affichage de texture, glTexCoordPointer
    Par paradize3 dans le forum OpenGL
    Réponses: 1
    Dernier message: 21/11/2008, 11h54
  3. Réponses: 7
    Dernier message: 04/06/2006, 12h24
  4. Textures avec transparence
    Par Corpio dans le forum OpenGL
    Réponses: 8
    Dernier message: 05/05/2006, 15h56
  5. [debutant] affichage ds un JtextArea avec classes independan
    Par tony_big_guy dans le forum Composants
    Réponses: 3
    Dernier message: 27/11/2005, 23h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo