C++ 在QML场景中显示内存中的网格

C++ 在QML场景中显示内存中的网格,c++,qml,qt3d,C++,Qml,Qt3d,在我的应用程序中,我从医学数据集生成3D网格。现在我想在Qt应用程序的QML中显示它。我已经找到了如何从文件中显示网格,但这需要我在每次修改网格时保存网格(例如,通过更改分割参数) 我希望在3D查看器中显示网格,而不必先将网格保存到文件中 如何在QML中实现这一点?Qt3D主要包装OpenGL,这意味着您可以使用顶点/索引数组对象以已知的方式将网格数据上载到图形卡,但当然可以通过Qt3D类而不是原生OpenGL类 看一看Qt3D示例,其中他们仅在内存中创建三角形。你可以很容易地把所有C++指令翻

在我的应用程序中,我从医学数据集生成3D网格。现在我想在Qt应用程序的QML中显示它。我已经找到了如何从文件中显示网格,但这需要我在每次修改网格时保存网格(例如,通过更改分割参数)

我希望在3D查看器中显示网格,而不必先将网格保存到文件中


如何在QML中实现这一点?

Qt3D主要包装OpenGL,这意味着您可以使用顶点/索引数组对象以已知的方式将网格数据上载到图形卡,但当然可以通过Qt3D类而不是原生OpenGL类

看一看Qt3D示例,其中他们仅在内存中创建三角形。你可以很容易地把所有C++指令翻译成QML树。您需要做的是将已有的顶点数据传输到属性。如果将渲染策略保留在
渲染设置
始终
上,则Qt3D应绘制网格

如果你的C++中存在你的网格数据,那么另一个选择是编写一个自定义C++类,它将你的数据映射到示例中的格式,然后使它可以用于QML。 编辑


在尝试将顶点数据直接传递到QML中的Qt3D时,似乎存在问题,因为无法将其转换为
QByteArray
。但是这里有一个如何用自定义C++类来解决它。

qt3d主要是封装OpenGL,这意味着你可以使用顶点/索引数组对象来以已知的方式将你的网格数据上传到图形卡上,但是当然是通过Qt3d的类而不是原生OpenGL类。 看一看Qt3D示例,其中他们仅在内存中创建三角形。你可以很容易地把所有C++指令翻译成QML树。您需要做的是将已有的顶点数据传输到属性。如果将渲染策略保留在
渲染设置
始终
上,则Qt3D应绘制网格

如果你的C++中存在你的网格数据,那么另一个选择是编写一个自定义C++类,它将你的数据映射到示例中的格式,然后使它可以用于QML。 编辑


在尝试将顶点数据直接传递到QML中的Qt3D时,似乎存在问题,因为无法将其转换为
QByteArray
。但是这里有一个如何用自定义C++类来解决它。

我会尝试一下,让你知道,我会尝试一下让你知道。
Mesh {
    id: mesh
    source: "mesh.obj"
}