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 :

Ecran splitter OpenGL


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 118
    Par défaut Ecran splitter OpenGL
    Bonjour,
    Je suis débutant avec OpenGL et j'essaye de créer un écran splitter mais ça fonctionne pas. Je procède de la façon suivante:
    Je dessine mes objets dans ma scène et après je créer deux vue différente une qui est fixé sur mon premier personnage et l'autre sur mon second. Le problème c'est que ça n'affiche que le second plan. Voila ma fonction qui split:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    void  Camera::aff_two()
    {
      glViewport(0,0,1000,500);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      gluPerspective(70.0f, 1000.0f/1000.0f, 1.0f, 10000.0f);
      gluLookAt(j1->getx(), 2500, j1->gety(),
                j1->getx(), 0.0f, j1->gety()-1,
                0.0f, 1.0f, 0.0f);
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
      glEnable(GL_DEPTH_TEST);
      glDepthFunc(GL_LEQUAL);
     
     
      glViewport(0,500,1000,500);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      gluPerspective(70.0f, 1000.0f/1000.0f, 1.0f, 10000.0f);
      gluLookAt(j2->getx(), 2500, j2->gety(),
                j2->getx(), 0.0f, j2->gety()-1,
                0.0f, 1.0f, 0.0f);
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
      glEnable(GL_DEPTH_TEST);
      glDepthFunc(GL_LEQUAL);
    }
    Sans les étoiles ^^.
    Merci pour votre aide.

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 050
    Par défaut
    Bonjour,
    Ce n'est pas la bonne partie du forum pour faire ceci. Je te conseil la rubrique OpenGL, mais un modo devrait le modifier bientôt

    Si tu utilises cette fonction, c'est normal que cela ne fonctionne pas. A ce que je vois le rendu sera fait dans ton dernier viewport.

    Si tu veux faire du splitter, tu dois réaliser autant de rendu que de splitter

    Donc:
    setup partie haute (perspective,lookat, etc...) faire le rendu.
    setup partir basse puis faire un autre rendu.

    PS:
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LEQUAL);
    Ne les setup que une seule fois, ou uniquement lorsque tu veux les modifier et pas à chaque frame.

    JL

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

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 219
    Par défaut
    Salut !

    A mon habitude et comme tout partisant de l'utilisation de shaders, je me permets tout d'abort d'abord (pour ne pas dire essentielement) de faire une remarque : l'utilisation de de glLoadIdentity, gluPerspective, gluLookAt & Cie (tout le pipeline fix en faite) sont noter en deprecier dans les documentations d'OpenGL. Elle sont en effet tres vielle, et leurs utilisation pas des plus user-friendly. Pour remplacer leurs utilisations, je te conseil de voir l'utilisation des shaders. Leurs utilisations n'est pas aisee, mais est une science exacte : une foi compri, tu sauras exactement ce que tu fais ou que se soit dans ton application. En effet, le pipeline est tres sequentialiser, ce qui nuit a la lisibilitee du code (une ligne depent de la sequence des precedentes), et est source d'erreurs. Moi meme j'avou ne pas avoir le courage (et on peut surement me le reprocher) de ne pas avoir envi de me plonger la dedans pour ces raisons. (Mais remarque que mon intention d'aider est quand meme demontre par cette reponse) Les Shader est un excelent investissement qui vaut largement etre une etape majeur avant de faire un rendu spliter. Sa risque de te prendre du temps, mais a mon sens inevitable si tu desire aprofondir tes connaissance en OpenGL. A mon opinion, ne pas les apprendres tout de suite n'est qu'une perte de temps passee sur le pipeline fix + debug des erreurs que son utilisation produit. En autre terme, cela sera un tres bonne investissement meme si cela devra peut etre repousser ton envi de faire un rendu spliter de quelques semaines.

    Maintenant, pour ce qui est conseil de rendu en spliter, je te conseil vivement de factoriser ton code de rendu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void renderView (int viewId)
    {
    // code de rendu d'une vue
    }
     
    void render ()
    {
    glViewport(0,0,1000,500);
    renderView(0);
    glViewport(0,500,1000,500);
    renderView(1);
    }
    Ca te donnera "2" fois moins de travail. Par ailleurs, un code orienter objets devient tres interessant a cet instant.

    Je te laisse decouvrir avec ton moteur de recherche favorit les points, tres bien expliquer sur la toiles, que tu ne connaiterais ou comprendrais pas.

    Si tu veux faire du splitter, tu dois réaliser autant de rendu que de splitter
    Les lecteurs plus familiariser avec les shaders pourrons etre interesser de savoir que justement non, pas forcement. Le geometry shader et sa variable de sortie gl_ViewportIndex est une alternative plus performante (surtout avec de l'instanciation de ce dernier).

    [clavier us]

  4. #4
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 050
    Par défaut
    l'utilisation de de glLoadIdentity, gluPerspective, gluLookAt & Cie (tout le pipeline fix en faite) sont noter en deprecier dans les documentations d'OpenGL
    Tout simplement car glu..... n'est qu'une librairie "d'assistance" à OpenGL. Si la personne l'utilise c'est qu'elle est en phase d'apprentissage. Donc Oublie les Shaders et autre spécificité pour le moment et essaye en priorité de comprendre le pipeline fixe. Puis, ensuite, après avoir compris le fonctionnement d'un pipeline de rendu fixe, tu pourras passé a un rendu programmer ( glsl ).

    Demander à quelqu'un de faire des shaders comme ça ne l'aide en aucun cas et n'a aucun sens que celui de prouvé quelque chose...

    Les étapes d'apprentissage sont importantes et les shaders n'est certainement pas la première mais la dernière des choses à toucher pour un débutant.

    Donc, OUI tu fais deux rendu avec un pipeline fixe comme tu es débutant.

    Cordialement,

Discussions similaires

  1. Ecran de veille integrant OpenGl
    Par Flow_75 dans le forum OpenGL
    Réponses: 18
    Dernier message: 22/07/2008, 16h19
  2. Ecran splité opengl sous delphi
    Par overlolo dans le forum OpenGL
    Réponses: 7
    Dernier message: 24/04/2008, 10h39
  3. OpenGL, MacOSX, plusieurs thread => ecran blanc
    Par Groove dans le forum OpenGL
    Réponses: 1
    Dernier message: 02/10/2007, 12h59
  4. Ecran opengl avec coordonnés en pixels
    Par djar dans le forum OpenGL
    Réponses: 3
    Dernier message: 25/02/2005, 21h35
  5. Réponses: 2
    Dernier message: 09/10/2004, 11h35

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