C++ 使用QVector3D在OpenGL中绘制点
我有一个C++ 使用QVector3D在OpenGL中绘制点,c++,qt,opengl,qtgui,qvector3d,C++,Qt,Opengl,Qtgui,Qvector3d,我有一个QVector3D列表,这是一个点列表,我想用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),
QVector3D
列表,这是一个点列表,我想用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,??);
或者我可以用什么其他方法来处理这个问题
glBufferData(GL_数组_BUFFER,data.size()*sizeof(QVector3D),顶点,GL_STATIC_DRAW)
这是正确的,但我建议使用更智能的容器,如QVector,在数据外部,如下所示:
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(QVector3D), myVector.constData(), GL_STATIC_DRAW);
下面是另一个在QVector3D
上下文中如何使用glBufferData
的官方示例:
在这里,您可以找到官方示例之后的另一个第三方示例:
然后,你可以写:
glDrawArrays(GL_POINTS, 0, data.size());
如果数据正确存储在vbo中,则可以使用
glDrawArrays(GL_POINTS,0,data.size())代码>,如所写。@SebastianHöffner,OpenGL如何识别QVector3D?@LaszloPapp,是的,正如sebastian所回答的。