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 :

utilisation des vector? [OpenGL 3.x]


Sujet :

OpenGL

  1. #1
    Membre régulier Avatar de fifafou
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 173
    Points : 92
    Points
    92
    Par défaut utilisation des vector?
    Bonjour,
    J'ouvre un nouveau sujet car le titre de mon sujet n'était plus à jour
    J'ai essayé d'utiliser des vector pour mettre mettre mes vertices bout a bout et envoyer ça ensuite au vbo
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
        std::vector <GLfloat> vertices;
        std::vector <GLfloat> coordTexture;
        GLfloat tvertices[] =  {
            -1.0f,-1.0f,-1.0f,
            -1.0f,-1.0f, 1.0f,
            -1.0f, 1.0f, 1.0f,
     
            1.0f, 1.0f,-1.0f,
            -1.0f,-1.0f,-1.0f,
            -1.0f, 1.0f,-1.0f,
     
            1.0f,-1.0f, 1.0f,
            -1.0f,-1.0f,-1.0f,
            1.0f,-1.0f,-1.0f,
     
            1.0f, 1.0f,-1.0f,
            1.0f,-1.0f,-1.0f,
            -1.0f,-1.0f,-1.0f,
     
            -1.0f,-1.0f,-1.0f,
            -1.0f, 1.0f, 1.0f,
            -1.0f, 1.0f,-1.0f,
     
            1.0f,-1.0f, 1.0f,
            -1.0f,-1.0f, 1.0f,
            -1.0f,-1.0f,-1.0f,
     
            -1.0f, 1.0f, 1.0f,
            -1.0f,-1.0f, 1.0f,
            1.0f,-1.0f, 1.0f,
     
            1.0f, 1.0f, 1.0f,
            1.0f,-1.0f,-1.0f,
            1.0f, 1.0f,-1.0f,
     
            1.0f,-1.0f,-1.0f,
            1.0f, 1.0f, 1.0f,
            1.0f,-1.0f, 1.0f,
     
            1.0f, 1.0f, 1.0f,
            1.0f, 1.0f,-1.0f,
            -1.0f, 1.0f,-1.0f,
     
            1.0f, 1.0f, 1.0f,
            -1.0f, 1.0f,-1.0f,
            -1.0f, 1.0f, 1.0f,
     
            1.0f, 1.0f, 1.0f,
            -1.0f, 1.0f, 1.0f,
            1.0f,-1.0f, 1.0f
        };   // Face 6
        GLfloat tcoordTexture[] =  {1, 1,  1, 0,   0, 0,      // Face 1
                                   1, 1,  0, 1,   0, 0,      // Face 1
     
                                   1, 1,  1, 0,   0, 0,      // Face 2
                                   1, 1,  0, 1,   0, 0,      // Face 2
     
                                   1, 1,  1, 0,   0, 0,      // Face 3
                                   1, 1,  0, 1,   0, 0,      // Face 3
     
                                   1, 1,  1, 0,   0, 0,      // Face 4
                                   1, 1,  0, 1,   0, 0,      // Face 4
     
                                   1, 1,  1, 0,   0, 0,      // Face 5
                                   1, 1,  0, 1,   0, 0,      // Face 5
     
                                   1, 1,  1, 0,   0, 0,      // Face 6
                                   1, 1,  0, 1,   0, 0 };    // Face 6
        const size_t tmp_size = sizeof(tvertices)/sizeof(tvertices[0]);
        const size_t tmp_size2 = sizeof(tcoordTexture)/sizeof(tcoordTexture[0]);
        for(i=0;i<tmp_size;i++)
            vertices.push_back(tvertices[i]);
        for(i=0;i<tmp_size2;i++)
            coordTexture.push_back(tcoordTexture[i]);
        //int sizeVertices=18*6*sizeof(GLfloat);
        //int sizeCoordTexture=12*6*sizeof(GLfloat);
        GLuint vaoID=0;
        GLuint vboID;
        mat4 projection;
        mat4 modelview;
        projection = perspective(70.0, (double)800 / 600, 0.1, 1000.0);
     
        GLuint programID = LoadShaders( "Shaders\\vertex.glsl", "Shaders\\fragment.glsl" );
        glGenBuffers(1,&vboID);
        glBindBuffer(GL_ARRAY_BUFFER,vboID);
            glBufferData(GL_ARRAY_BUFFER,vertices.size()+coordTexture.size(),0,GL_STATIC_DRAW);
            glBufferSubData(GL_ARRAY_BUFFER,0,vertices.size(),vertices.data());modelview=translate(modelview,vec3(0.0f,-40.0f,0.0f));
            glBufferSubData(GL_ARRAY_BUFFER,vertices.size(),coordTexture.size(),coordTexture.data());
        glBindBuffer(GL_ARRAY_BUFFER,0);
        glGenVertexArrays(1,&vaoID);
        glBindVertexArray(vaoID);
            glBindBuffer(GL_ARRAY_BUFFER,vboID);
            glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0,BUFFER_OFFSET(0));
            glEnableVertexAttribArray(0);
            glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0,BUFFER_OFFSET(vertices.size()));
            glEnableVertexAttribArray(1);
            glBindBuffer(GL_ARRAY_BUFFER,0);
        glBindVertexArray(0);
    mais le cube que cela doit afficher est à 80% cassé
    Donc je me demande qu'est ce qui ne va pas ou peut on faire mieux sans vector?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Points : 72
    Points
    72
    Par défaut
    Pour moi le paramètre size de glBufferData() et glBufferSubData() est la taille en octets, la taille des vector donnée (ie leur nombre d'éléments) devrait être multipliée par sizeof(GLfloat) du coup, non ?
    Pareil pour le paramètre d'offset de glBufferSubData() ?

  3. #3
    Membre régulier Avatar de fifafou
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 173
    Points : 92
    Points
    92
    Par défaut
    Oups, j'avais pas fait attention
    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/07/2012, 13h14
  2. Utilisation correcte des vectors et iterators
    Par Ange_blond dans le forum SL & STL
    Réponses: 7
    Dernier message: 29/01/2009, 13h46
  3. 3 précisions sur l'utilisation des "std::vector"
    Par Invité dans le forum SL & STL
    Réponses: 9
    Dernier message: 10/01/2006, 00h42
  4. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44
  5. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01

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