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 :

Problème compréhension : GL_ARB_vertex_attrib_binding [OpenGL 4.x]


Sujet :

OpenGL

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Par défaut Problème compréhension : GL_ARB_vertex_attrib_binding
    Bonjour à vous tous :-).

    Dans le but d'optimisé au maximum mon moteur, et après avoir fait diverses accélérations (Direct State Access, Buffer Storage etc), j'en viens maintenant au vertex binding.

    Voilà, quand je lis les conseils de Valve pour le portage de Source, je lis "Il est nécessaire de relier le tampon avant son utilisation. Si cela vous déplaît, vous pouvez utiliser les Vertex Attribute Objects (VAO), mais cela est plus lent sur toutes les implémentations, donc Valve le déconseille. À la place, l'extension ARB_vertex_attrib_binding pourra vous aider et rend le code plus facile à lire.".

    Donc voilà, je me renseigne etc, je lis un peu partout que les VAO sont déconseillé, mais je ne trouve pas grande chose sur les Vertex_Attrib_Binding. Donc je décide d'aller voir les spécifications, et là que vois-je?
    "void VertexArrayBindVertexBufferEXT(uint vaobj, uint bindingindex, uint buffer, intptr offset,
    sizei stride);"
    J'en déduis qu'il faut utilisé les VAO?

    Bref, je vais commencé à faire mes tests, et là je test, je fais un layout(binding = 0) in vec2 in_Vertex; Et là bim erreur "unknow layout specifer "binding = 0").

    Donc je ne comprends pas du tout comment les utilisé...

    En continuant ma lecture dans les spéc, je tombe sur
    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
    // Set up formats and relative offsets within the interleaved data.
            VertexAttribFormat(0, 3, FLOAT, FALSE, 0);
            VertexAttribFormat(1, 3, FLOAT, FALSE, 12);
            VertexAttribFormat(2, 2, FLOAT, FALSE, 0);
            VertexAttribFormat(3, 2, FLOAT, FALSE, 8);
     
            // Set up attrib->binding mapping
            VertexAttribBinding(0, 0);
            VertexAttribBinding(1, 0);
            VertexAttribBinding(2, 1);
            VertexAttribBinding(3, 1);
     
            // Bind the vertex buffers to binding index 0 and 1.
            BindVertexBuffer(0, buffer0, 0, 24);
            BindVertexBuffer(1, buffer1, 0, 16);
    J'en déduis que je dois laissé un layout(location = 0) in vec2 vertex; Et pour chaque location on le place sur un "binding point" ?

    Mais est ce que pour faire les choses bien on doit placer tout ça à l'intérieur d'un Vertex Array Object ou est ce vraiment déconseillé?

    Merci pour votre réponse :-)

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 157
    Billets dans le blog
    152
    Par défaut
    Bonjour,

    Pas sur que cela aide, mais la wiki OpenGL a nettemment progresser ces derniers temps : https://www.opengl.org/wiki/Vertex_Specification
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Par défaut
    Bonjour :-).

    Effectivement celà m'a permis de comprendre, en revanche, celà ne me dit toujours pas quoi faire avec les VAO? Faut il les utiliser ou ne pas les utiliser du coup :/ ?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 157
    Billets dans le blog
    152
    Par défaut
    Je crois bien que oui.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Par défaut
    Il me semble que tous ceux qui disent que les VAO sont lents se basent seulement sur la présentation de Valve (avant ça, je crois pas avoir vu une seule personne mentionner leur lenteur), et certaines personnes ne sont pas tout a fait convaincues. Je n'ai fait aucun test, mais si les VAO sont vraiment lents, je pense qu'il vaut mieux les utiliser quand même, puisque c'est ce qu'il y a de plus optimisé au niveau de ton application (après, si les drivers sont pourris, ils seront peut être un peu mieux dans quelques temps).

  6. #6
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 035
    Billets dans le blog
    12
    Par défaut
    Pour utiliser les VAO dans mon moteur, je ne les trouve pas particulièrement lents, et puis autre chose, ils sont obligatoires depuis OpenGL 3.x en core profile.
    Donc qu'ils soient lents ou pas, on n'a pas le choix.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

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

Discussions similaires

  1. problème compréhension lors de l'appel à une fonction
    Par icpajacky dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 10/06/2009, 18h19
  2. Problème compréhension fonction Prolog
    Par jpsegret dans le forum Prolog
    Réponses: 10
    Dernier message: 03/11/2007, 18h21
  3. problème compréhension code
    Par mitherkiller dans le forum SDL
    Réponses: 3
    Dernier message: 13/04/2007, 09h38
  4. [MFC]Problème compréhension code
    Par bitardo dans le forum MFC
    Réponses: 1
    Dernier message: 23/05/2006, 15h56
  5. [Smarty] problème compréhension sur les tableaux
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 09/02/2006, 16h44

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