【问题标题】:Draw points in OpenGL with QVector3D使用 QVector3D 在 OpenGL 中绘制点
【发布时间】:2014-04-11 02:02:41
【问题描述】:

我有一个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,??);

或者我可以使用其他什么方法来处理这个问题?

【问题讨论】:

  • 如果数据正确存储在vbo中,你可以直接使用glDrawArrays(GL_POINTS, 0, data.size());,写成here
  • @SebastianHöffner,OpenGL如何识别QVector3D?
  • @LaszloPapp,是的,正如塞巴斯蒂安回答的那样。

标签: c++ qt opengl qtgui qvector3d


【解决方案1】:

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

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

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

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

geometryengine.cpp Example File

在官方示例之后,您可以在这里找到另一个第三方示例:

FabScan100

那么,你可以这样写:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多