Dessinez des points dans OpenGL avec QVector3D
Question
j'ai une liste de QVector3D
, qui est une liste de points, je veux dessiner une liste de points avec glDrawArrays
.
initializeGLFunctions();
glGenBuffers(2, vbo);
//the vertices
QVector3D *vertices = &data[0];
glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(QVector3D), vertices, GL_STATIC_DRAW);
glDrawArrays(GL_POINTS,??);
ou quelle autre méthode puis-je utiliser pour résoudre ce problème ?
La solution
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(QVector3D), sommets, GL_STATIC_DRAW);
C'est correct, mais je suggérerais d'utiliser des conteneurs plus intelligents comme QVector en dehors d'un then constData comme suit :
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(QVector3D), myVector.constData(), GL_STATIC_DRAW);
Voici un autre exemple officiel d'utilisation glBufferData
dans le contexte de QVector3D
:
exemple de fichier geometrieengine.cpp
Vous trouverez ici un autre exemple tiers suivant l'exemple officiel :
Ensuite, vous pourriez écrire :
glDrawArrays(GL_POINTS, 0, data.size());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow