从您链接的视频中,我想出了下面的代码(也发布在Qt论坛:
https://forum.qt.io/topic/66808/qt3d-draw-grid-axis-lines/3).
首先,您需要创建QGeometry.因为它是一条简单的线,它只由2个顶点(起点,终点)和2个索引(链接顶点)组成.为此,您需要创建2个QByteArray并将它们存储到QBuffer中.在第一个中,存储2个顶点(每个顶点的x,y和z坐标).在第二个中,您只是说要将第一个顶点链接到第二个顶点.由于我们在渲染器上使用Qt3DRender :: QGeometryRenderer :: Lines,因此只需要2个索引.
完成后,您只需将QGeometry放入QGeometryRenderer中以获得网格,然后将网格放入QEntity中,使其显示在树中并进行渲染.
#include
#include
#include
#include
#include
#include
void drawLine(const QVector3D& start, const QVector3D& end, const QColor& color, Qt3DCore::QEntity *_rootEntity)
{
auto *geometry = new Qt3DRender::QGeometry(_rootEntity);
// position vertices (start and end)
QByteArray bufferBytes;
bufferBytes.resize(3 * 2 * sizeof(float)); // start.x, start.y, start.end + end.x, end.y, end.z
float *positions = r