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 :

Nécessité de recréer un contexte OpenGL lors d'un changement d'antialiasing?


Sujet :

OpenGL

  1. #1
    Membre actif
    Avatar de Fabien Henon
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mars 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 151
    Points : 226
    Points
    226
    Par défaut Nécessité de recréer un contexte OpenGL lors d'un changement d'antialiasing?
    Bonjour à tous,

    Je voudrais dans mon application donner la possibilité de changer quelques paramètres de la fenêtre à l'utilisateur, comme par exemple la taille, fullscreen ou non, mais aussi le niveau d'antialiasing, et tout ça depuis le programme (sous entendu: la fenêtre et le contexte OpenGL sont déjà créés).

    Pour la modification de la taille ou le fullscreen je sais que je peux faire ça tout simplement à la volée avec l'API Windows sans avoir à recréer quoi que ce soit.

    Par contre pour l'antialiasing ça utilise l'extension WGL_ARB_pixel_format, ainsi que l'extension WGL_ARB_multisample si je ne me trompe pas. Ainsi si je veux changer le niveau d'antialiasing je dois refaire un appel à la fonction wglChoosePixelFormatARB et ensuite faire un appel à SetPixelFormat (dites moi si je me trompe).
    Et donc la question que je me pose est: Est-ce qu'il faut que je recrée mon contexte OpenGL après une telle modification? Ou bien est-ce que l'appel final à SetPixelFormat est suffisant et répercutera les changements à mon contexte OpenGL sans que je n'ai besoin de le recréer?

    Merci d'avance de votre aide
    Soft Creations - FirmLife

    Soft Creations: Blog de Fabien Henon et site de prestations de sites web et applications mobiles
    FirmLife: Le nouveau jeu de gestion d'entreprises en ligne

  2. #2
    Membre actif
    Avatar de Fabien Henon
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mars 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 151
    Points : 226
    Points
    226
    Par défaut
    Personne ne sait?
    Soft Creations - FirmLife

    Soft Creations: Blog de Fabien Henon et site de prestations de sites web et applications mobiles
    FirmLife: Le nouveau jeu de gestion d'entreprises en ligne

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 219
    Points : 239
    Points
    239
    Par défaut
    Bonsoir

    Tu n'est pas obligée en effet. Personnellement, moi j'utilise les FBO pour le multi sampling, il suffit de lui attacher des "render buffer" qui on été configuré avec glRenderbufferStorageMultisample et non glRenderbufferStorage.

    lien de l'extension si t'a le courage.
    bon tuto sur les frams buffer si nécéssaire.

    La diférence c'est qu'avec le multisampling, tu peut pas dessiné directement sur une texture, il faut crée un render buffer pour le GL_COLOR_ATTACHEMENT configuré avec glRenderbufferStorageMultisample, joindre le GL_DEPTH_ATTACHEMENT aussi configuré avec glRenderbufferStorageMultisample.

    EXEMPLE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glRenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH_COMPONENT, TEXTURE_WIDTH, TEXTURE_HEIGHT);
     
    // ------------------------- se transforme en :
    glRenderbufferStorageMultisample (GL_RENDERBUFFER, Sampling, GL_DEPTH_COMPONENT, TEXTURE_WIDTH, TEXTURE_HEIGHT);
    ET
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    glGenTextures (1, &textureId);
    glBindTexture (GL_TEXTURE_2D, textureId);
    glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, TEXTURE_WIDTH, TEXTURE_HEIGHT, 0,
                 GL_RGBA, GL_UNSIGNED_BYTE, 0);
     
    // ------------------------- se transforme en :
    glGenRenderbuffers (1, &RenderBufferId);
    glBindRenderbuffer (GL_TEXTURE_2D, RenderBufferId);
    glRenderbufferStorageMultisample (GL_RENDERBUFFER, Sampling, GL_RGBA8, TEXTURE_WIDTH, TEXTURE_HEIGHT);

    Vien ensuite ton rendu.

    Puis pour finir, un glBlitFrameBuffer
    - soit directement vers le FBO 0,
    - soit sur une texture et tu t'ajoute un post traintement (correction gamma, HDR etc ...)

    Attention, pour fair un rendu en multi sampling, tout les render buffer attaché au FBO doivent avoir le même Sampling !

    Avec cette solution, tu met aucun antialiasing sur le contexte et tu modifie simplement les renders buffers.

    En espérant t'avoir aidé.

  4. #4
    Membre actif
    Avatar de Fabien Henon
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mars 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 151
    Points : 226
    Points
    226
    Par défaut
    Merci de ta réponse, j'avoue que je ne pensais plus en avoir.

    Je vais essayer tout ça
    Soft Creations - FirmLife

    Soft Creations: Blog de Fabien Henon et site de prestations de sites web et applications mobiles
    FirmLife: Le nouveau jeu de gestion d'entreprises en ligne

Discussions similaires

  1. Context opengl, création / destruction
    Par shenron666 dans le forum OpenGL
    Réponses: 3
    Dernier message: 12/10/2007, 10h39
  2. Contexte OpenGL et fullScreen
    Par zenux dans le forum wxWidgets
    Réponses: 1
    Dernier message: 28/08/2007, 20h04
  3. problème d'affichage d'un contexte opengl
    Par stardeath dans le forum Windows
    Réponses: 1
    Dernier message: 17/07/2007, 14h04
  4. import fichier vrml avec coin3d dans un contexte openGL
    Par kikodingo dans le forum OpenGL
    Réponses: 1
    Dernier message: 08/05/2007, 22h28
  5. rechargement contexte lors d'un changement de classe
    Par n00noors dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 10/08/2006, 17h21

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