Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用QVector3D在OpenGL中绘制点_C++_Qt_Opengl_Qtgui_Qvector3d - Fatal编程技术网

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所回答的。