首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QML场景中显示内存中的网格

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

Stack Overflow用户
提问于 2019-02-19 00:13:13
回答 1查看 299关注 0票数 0

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

代码语言:javascript
复制
Mesh {
    id: mesh
    source: "mesh.obj"
}

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

我如何在QML中做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2019-02-19 16:21:38

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

看看Qt3D示例的this code,其中他们只在内存中创建一个三角形。您可以很容易地将所有C++指令转换为QML树。您需要做的是将已有的顶点数据传输到您的属性。如果您将渲染策略留在位于AlwaysRenderSettings上,则Qt3D应绘制网格。

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

编辑

在尝试将顶点数据直接传递给QML中的Qt3D时,似乎有一个问题,因为它不能转换为QByteArray。但是这里有一个使用自定义C++类来解决这个问题的example

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54751301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档