使用QVector3D在OpenGL中绘制点

Draw points in OpenGL with QVector3D

本文关键字:绘制 OpenGL QVector3D 使用      更新时间:2023-10-16

我有一个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_ARRAY_BUFFER,data.size()*sizeof(QVector3D),顶点,GL_STATIC_DRAW);

这是正确的,但我建议在constData之外使用更智能的容器,如QVector,如下所示:

glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(QVector3D), myVector.constData(), GL_STATIC_DRAW);

以下是如何在QVector3D的上下文中使用glBufferData的另一个官方示例:

geometryengine.cpp示例文件

在这里,你可以找到另一个第三方的例子继官方的例子:

FabScan100

然后,你可以写:

glDrawArrays(GL_POINTS, 0, data.size());