Qt实现读取显示obj文件——多线程加载纹理

13 篇文章 0 订阅
12 篇文章 0 订阅

在之前的程序中,已经实现了基本的加载,但是大家知道纹理的加载实在太慢了,整个界面都是卡死的状态,所以得想办法实现多线程加载纹理;

我的想法是一个线程先将没有纹理的图形读取出来,另一个线程读取纹理,读取出来以后再重绘实现多线程绑定纹理功能~


由于OpenGL中不支持直接多线程的操作~所以需要曲线救国~~

在博客园里找到了一位兄弟的博客OpenGL多线程创建纹理,经过他的启发,实现了在Qt中的多线程加载纹理,不过需要修改一处关键地方:

hDC = wglGetCurrentDC();
//hRC = wglGetCurrentDC();//此处不正确~
hRC = wglGetCurrentContext();
hRCShareing = wglCreateContext(hDC);

需要将hRC的获取方式改成当前上下文,而不是通过hDC获取。

需要源码的同学请移步我的gitHubhttps://github.com/Shen001/MultilThread-LoadOBJ.git,如果对您起到了帮助,请不要吝啬您的star;如果有疑问也可以直接留言~!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Qt 所提供的 3D 模型加载功能,可以轻松地将 OBJ 文件加载到应用程序中进行展示。OBJ 文件是一种常见的 3D 模型文件格式,通常是由 3D 建模软件生成的,包含了模型的各种属性信息。下面是在 Qt加载 OBJ 文件的一些具体步骤: 1. 创建一个 QEntity 对象,作为整个模型的容器。 2. 创建一个 QMesh 对象,用于存储 OBJ 文件中的顶点和面信息。 3. 通过 QMesh 对象的 load() 方法,将 OBJ 文件读取到 QMesh 对象中。 4. 创建一个 QMaterial 对象,用于控制模型的材质属性。 5. 创建一个 QDiffuseMapMaterial 对象,用于指定模型的纹理贴图。 6. 创建一个 QTransform 对象,用于设置模型的位置、姿态等属性。 7. 将 QMesh、QMaterial、QTransform 等对象添加到 QEntity 容器中。 8. 将 QEntity 显示在场景中,即可完成模型的加载和展示。 需要注意的是,在加载 OBJ 文件时,要根据文件格式中的具体内容将数据解析成顶点坐标、法向量等等,然后将这些数据存储到 QMesh 对象中。此外,还可以通过监听 QMesh 对象的 visibilityChanged() 信号,并根据需要进行一些额外的操作,以实现更加丰富的模型效果。 总的来说,Qt 提供的 3D 功能非常强大,可以轻松实现 OBJ、STL、FBX 等常见的 3D 模型文件格式的加载和展示。开发者只需按照上述步骤进行简单配置,就能够将丰富的 3D 模型效果带到应用程序中,提升用户体验和应用价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值