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 :

Informations sur les VBO


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 99
    Par défaut Informations sur les VBO
    Bonjour,

    Depuis quelques jours bidouille sur OpenGl (enfin j'essaye..). Donc j'arrive pas vraiment à trouver les réponses à mes questions donc je viens vous les poser.

    Utiliser OpenGL avec C++, portabilité inéxistante?
    Une première question, donc sur la portabilité d'une application codé en C++? Il n'y a pas d'exportation possible sur linux même si je recompile mes sources plus tard sous linux?

    Un VBO, quel type de structure?
    Je vois plein de chose sur internet et je ne sais jamais si c'est à jour ou pas.. Donc pour construire mon VBO, c'est un tableau de float avec des données entrelacé? Exemple verticles[10]={V1x, V1y, V1z, Vn1x, Vn1y, Vn1z, Vt1x, Vt1y, V2x, V2y, V2z, Vn2x, Vn2y, Vn2z, Vt2x, Vt2y, V3x, V3y, V3z, Vn3x, Vn3y, Vn3z, Vt3x, Vt3y}. Peut-on également rajouter les couleur dans ce tableau? De même coordonnées pour les placer dans l'espace une fois leur modélisation effectuées?

    glGenBuffers, le nombre buffer dont j'ai besoin?
    Donc un buffer, c'est un espace dans la VRAM ? Je ne suis pas vraiment sur donc... qu'est ce qui va me pousser d'avoir plus d'un buffer? Est ce que pour chaque objet j'assigne un buffer différent ou bien prendre un gros buffer?

    Un tableau d'indices
    J'ai vu par exemple sur ce site (http://www.songho.ca/opengl/gl_vertexarray.html) des tableaux d'indices alors sur d'autres exemples ils n'en utilisent pas http://en.wikipedia.org/wiki/Vertex_Buffer_Object. Donc d'après ce que j'ai compris, normalement dans ce tableau sont mis dans l'ordre les vertex à utiliser pour dessiner nos polygone (pour moi des triangles). Mais du coups dans l'exemple du wiki comment ça se passe? Est-on obligé de faire ce tableau d'indice? S'il n'est pas renseigné, est-ce alors l'ordre dans lequel sont annoncé les verticles qui est pris en compte?

    GLfloat verticles
    Je me pose une question sur le type du tableau envoyé dans la VRAM, de temps en temps je vois float verticles[] et défois des GLfloat verticles[], est ce qu'il y a une différence?

    Enfin j'ai une dernière question qui dépend de la question précédente, je bidouille en C++. Si j'ai une structure de tableau comme celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    struct vec3 {
        float x, y, z;
    };
    struct vec2 {
        float x, y;
    };
    struct Vertex {
        vec3 _position;
        vec3 _normal;
        vec2 _texcoord;
    };
    std::vector<Vertex> _vb;
    Suis-je obligé de changer ma structure de tableau pour utiliser mes données avec openGL?

    Merci si des gens ont réussie à lire jusque qu'ici ^^. Et doublement merci si des personnes peuvent répondre à mes interrogations.

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Alors je vais essayer de répondre a tes questions :

    Citation Envoyé par minipopov Voir le message
    Bonjour,
    Utiliser OpenGL avec C++, portabilité inéxistante?
    Une première question, donc sur la portabilité d'une application codé en C++? Il n'y a pas d'exportation possible sur linux même si je recompile mes sources plus tard sous linux?
    J'ai pas trop compris , mais ton code source opengl est portable sur plusieurs sur plateforme , si tu utilise un système de fenêtrage portable t'aura même pas besoin de changer une ligne de code.

    Citation Envoyé par minipopov Voir le message
    Un VBO, quel type de structure?
    Je vois plein de chose sur internet et je ne sais jamais si c'est à jour ou pas.. Donc pour construire mon VBO, c'est un tableau de float avec des données entrelacé? Exemple verticles[10]={V1x, V1y, V1z, Vn1x, Vn1y, Vn1z, Vt1x, Vt1y, V2x, V2y, V2z, Vn2x, Vn2y, Vn2z, Vt2x, Vt2y, V3x, V3y, V3z, Vn3x, Vn3y, Vn3z, Vt3x, Vt3y}. Peut-on également rajouter les couleur dans ce tableau? De même coordonnées pour les placer dans l'espace une fois leur modélisation effectuées?
    Non tu n'es pas obligé d'entrelacé les données et oui on peut rajouter des coordonné pour les couleurs.

    Citation Envoyé par minipopov Voir le message
    glGenBuffers, le nombre buffer dont j'ai besoin?
    Donc un buffer, c'est un espace dans la VRAM ? Je ne suis pas vraiment sur donc... qu'est ce qui va me pousser d'avoir plus d'un buffer? Est ce que pour chaque objet j'assigne un buffer différent ou bien prendre un gros buffer?
    ça dépend j'imagine mais pour ma part chaque objet a un buffer.

    Citation Envoyé par minipopov Voir le message
    Un tableau d'indices
    J'ai vu par exemple sur ce site (http://www.songho.ca/opengl/gl_vertexarray.html) des tableaux d'indices alors sur d'autres exemples ils n'en utilisent pas http://en.wikipedia.org/wiki/Vertex_Buffer_Object. Donc d'après ce que j'ai compris, normalement dans ce tableau sont mis dans l'ordre les vertex à utiliser pour dessiner nos polygone (pour moi des triangles). Mais du coups dans l'exemple du wiki comment ça se passe? Est-on obligé de faire ce tableau d'indice? S'il n'est pas renseigné, est-ce alors l'ordre dans lequel sont annoncé les verticles qui est pris en compte?
    Alors ça dépends de ce que tu utilise glDrawArrays ,ne prend pas de tableau indice , glDrawElements si.
    Donc non t'es pas obligé d'utiliser un tableau d'indices et pour glDrawArrays les triangles sont dessiné dans ordre.

    Citation Envoyé par minipopov Voir le message
    [B] GLfloat verticles [B]
    Je me pose une question sur le type du tableau envoyé dans la VRAM, de temps en temps je vois float verticles[] et défois des GLfloat verticles[], est ce qu'il y a une différence?
    Non il y en a pas.

    Citation Envoyé par minipopov Voir le message
    Suis-je obligé de changer ma structure de tableau pour utiliser mes données avec openGL?
    Non tu n'es pas obligé.

    En espérant d'avoir éclairer , mais bon le mieux pour apprendre c'est essayer sois même ça aurait répondu a la plupart de tes questions.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 99
    Par défaut
    Justement j'essaye et ça ne marche pas, j'essaye donc de comprendre ce que je fais mal, merci pour tes réponses elles m'ont bien éclairé.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 151
    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 151
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    En français, vous pouvez vous aider de ces tutoriels : http://raptor.developpez.com/tutorial/opengl/vbo/
    et
    http://tcuvelier.developpez.com/tuto...pengl-4/5-vbo/

    Les programmes C, sont compatibles en C++ (un compilateur C++ compile un programme écrit correctement en C). Après, le code C, ou C++ est compilable sous Windows et sous Linux, si les bibliothèques utilisées sont disponibles pour les deux systèmes. Il est évident que si vous utilisez une bibliothèque comme Win32 API, vous aurez beaucoup de mal à faire un programme sous Linux.

    Pour prouver que OpenGL est compatible avec le C++, vous pouvez regarder cette bibliothèque : http://oglplus.org/ qui fournit une surcouche à la bibliothèque, en C++.

    Un VBO, quel type de structure?
    Je vois plein de chose sur internet et je ne sais jamais si c'est à jour ou pas.. Donc pour construire mon VBO, c'est un tableau de float avec des données entrelacé? Exemple verticles[10]={V1x, V1y, V1z, Vn1x, Vn1y, Vn1z, Vt1x, Vt1y, V2x, V2y, V2z, Vn2x, Vn2y, Vn2z, Vt2x, Vt2y, V3x, V3y, V3z, Vn3x, Vn3y, Vn3z, Vt3x, Vt3y}. Peut-on également rajouter les couleur dans ce tableau? De même coordonnées pour les placer dans l'espace une fois leur modélisation effectuées?
    Oui, vous pouvez rajouter des couleurs dans les buffers (ou un nouveau buffer, pour les couleurs). Voir les tutoriels ci dessus.

    Par contre, pour déplacer un objet, il est fortement conseillé d'utiliser une matrice. Pour cela, je vous conseillerai de lire : http://geeks3d.developpez.com/calcul...al-glsl-part1/ / http://geeks3d.developpez.com/calcul...al-glsl-part2/ / http://geeks3d.developpez.com/calcul...al-glsl-part3/

    et d'utiliser GLM.

    glGenBuffers, le nombre buffer dont j'ai besoin?
    Donc un buffer, c'est un espace dans la VRAM ? Je ne suis pas vraiment sur donc... qu'est ce qui va me pousser d'avoir plus d'un buffer? Est ce que pour chaque objet j'assigne un buffer différent ou bien prendre un gros buffer?
    Cela crée un objet de type tampon dans OpenGL (le driver de la carte graphique). Afin de l'utiliser, vous avez un ID. Ensuite, vous allez spécifier des données/une taille qui permettra une allocation dans la VRAM. Pour faire simple, oui glGenBuffers() permet la création d'un espace en VRAM.

    Ensuite, vous pouvez avoir autant de tampons que vous voulez, pour peu que l'espace en VRAM soit suffisamment grande. Chaque objet (.obj) aura un buffer unique, mais pourra être dessiner autant de fois que l'on veut (et plus tard on parlera même d'instanciation).

    Il y a quelques fonctions glDraw* qui ne prennent pas de tableau d'indice, car elles vont dessinés les vertex dans l'ordre spécifiés dans les tampons à dessiner.
    Je ne conseillerai pas trop la wikipedia, mais plus la wiki d'OpenGL : https://www.opengl.org/wiki/Main_Page

    Il n'y a généralement pas de différence entre float et GLFloat. Sauf que si pour une raison quelconque, vous avez une plateforme compatible OpenGL, mais n'ayant que des registres sur 16 bits, alors GLFloat != float. L'avantage d'un GLfloat, c'est d'avoir un type transparent à la plateforme finale et qui reste compatible avec OpenGL.
    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 confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 99
    Par défaut
    Merci pour ces réponses

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

Discussions similaires

  1. Informations sur les langages/outils de ce forum
    Par Idelways dans le forum Autres langages
    Réponses: 3
    Dernier message: 14/02/2018, 12h08
  2. [LG]Informations sur les procédures
    Par noureddine9h dans le forum Langage
    Réponses: 3
    Dernier message: 09/02/2005, 21h23
  3. information sur les ps
    Par devalender dans le forum Débuter
    Réponses: 4
    Dernier message: 20/07/2004, 10h07
  4. Réponses: 6
    Dernier message: 28/04/2004, 10h41
  5. Informations sur les procédures stockées
    Par jfphan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/01/2004, 14h30

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