[openGL] qt5版本+mingw编译Assimp库+调用

news/2024/4/28 8:41:25/文章来源:https://blog.csdn.net/qq_45280097/article/details/137010137

目录

一 版本

二 编译问题

三 CMAKE准备

四 开始编译

4.1 准备Assimp源码

4.2 编译工具准备

4.3 生成Assimp库

4.4 使用Assimp

4.4.1 准备

4.4.2 加载模型

4.4.3 模型效果


一 版本

Assimp官网上已经停止更新截至在3.3.1版本,但是这个版本编译是最稳定的,较新的版本需要在github上下载编译

  • CMAKE: cmake的版本也要跟Assimp源码的版本对应的差不多,可以参考二者的发布时间来取决于采用哪种版本编译(相差不是很大就可以了)。
  • 如果因为版本问题出现的一些警告高者提示,如果是警告基本上不需要管,进行下一步就行,如果想要解决警告提示,可以去CMAKE官网查看对应版本的更新来修改源码。

我使用的CMAKE版本是: CMAKE 3.20.0 --> 下载地址

软件包名-->cmake-3.20.0-rc1-windows-x86_64.msi

  • linux下面操作逻辑是完全一致的,只不过命令行模式下可能需要手动配置一下环境变量

Assimp版本是 3.3.1--->https://github.com/assimp/assimp/tree/v3.3.1 

二 编译问题

  • 网上很多的编译报错提示说是需要DirectX的支持,但其实是不需要的,试想一下,DirectX可是只有windows支持的,那为openGL(跨平台的)编译一个导入数据的库,又怎么可以受到DirectX的影响呢(个人理解)。
  • 对于较新版本的Assimp版本可能会报一些未定义的问题,这个就需要一步一步的去解决了,我这里只编译了最快并且最不容易出错的版本3.3.1
  • 这个版本照着教程,即使系统中没有任何配置(oepnGL等库)也不会出问题.如果编译的库有问题,那需要检查一下环境变量(CMAKE,MingW等),如果在环境变量中有多个版本的mingw编译器,并且在后面的编译步骤中没有手动指定编译器,就有可能导致识别到别版本的编译器.

三 CMAKE准备

照着前面的地址会下载到一个Cmake-gui

  • 前两步直接点击next就行,不再演示
  • 这里选择为所有的用户都添加CMAKE的环境变量,并且创建了一个桌面图标

  • 选择CMAKE的按照路径,其实这个也不是很大,根据个人喜好安装到指定位置就行

  • 点击install等待安装完成即可

四 开始编译

4.1 准备Assimp源码

  • 将前面地址的Assimp下载到本地文件夹中,不要用中文路径

4.2 编译工具准备

  • 打开cmake-gui工具,在源码路径处选择,下载的源码的根目录,然后再编译路径下选择相同目录下的build目录
  • build目录不存在,直接点击Yes构造时创建就行,也可以提前创建

  • 选择构建工具MinGW MakeFiles

  • 选中对应的MinGW编译器中的gcc和g++可执行文件就行,位于qt对应版本的tools目录下

  • 点击Configure进行编译前配置
  • 出现这种警告可以不用管,这是一些cmake版本升级后已经移除的一些配置,它上面说在2.8.12之后已经被移除了的一些规则,可能你使用2.8.12版本的cmake就不会有警告,但这并不需要去更新cmake版本。
  • 再出现红色区域中的: Configuring done 就可以了、

  • 点击Generate开始构建工程
  • 生成Generating done表示构建成功
  • 这时候CMAKE-GUI的工作就完成了,可以关闭了。

4.3 生成Assimp库

  • 进入刚才构建的build目录,并且以管理员模式打开命令行,也可以按住shift键在右键菜单中打开powershell。
  • 输入命令  mingw32-make -j8 等待执行完成
  • 如果mingw32-make命令未发现,那么需要为mingw设置系统环境变量

mingw32-make -j8

  • 这里其实已经生成了libassimp.dll,查看日志后发现报错是因为在进行gtest环节无法正确链接到github上的源码,导致gtest构建中找不到CmakeList.txt文件,这并不影响库的使用。

4.4 使用Assimp

4.4.1 准备

  • 需要build/code目录下生成的libassimp.dll动态库
  • 需要build目录下生成的revison头文件
  • 需要源码SRC下面的assimp整个目录

4.4.2 加载模型

具体加载模型的知识后面补充后会在这里给出链接。

qt源码--->这里 

  • 首先创建一个include目录将准备好的assimp目录放进入,并且将revison头文件也放到assimp目录下
  • 然后创建一个lib目录将libassimp.dll放进去,使用下面的方法在qt中就能使用asimp加载模型了。
INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -lassimp

4.4.3 模型效果

  • 如果是下载的源码,需要点击模型选择进行加载,默认没有加载任何模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1026825.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WORDPRESS从WORD复制粘贴公式

整合教程:WordPress插件包整合教程 WordPaster支持自动上传本地图片文件,自动上传Word文档中的图片 步骤与效果: 1.打开word文档,复制word文档内容 2.在网页中打开编辑器页面,点击“粘贴本地文件,Word文档”按钮上传…

GBase8a-GDCA认证考试-复习参考题

个人能力有限,正确率97%(97分)。 请注意甄别,根据所学知识综合判断,欢迎指出错误答案。 欢迎学习天津南大通用数据技术股份有限公司|GBASE-致力于成为用户最信赖的数据库产品供应商 免费参加认证培训:为…

Visio中存在问题的解决方法

公式缩放 mathtype公式在visio缩放之后,出现了变形。 解决方法:每次输入公式都通过 插入->对象->mathType Equation 新建一个公式。可以避免 注:网上有的说在word中使用mathtype编写公式,之后复制到visio中。 插入波形 选择…

Java的IDEA的工程管理

模块和包的图标: 举个例子: IDEA中创建包: 如图所示,com.LBJ的意思是在com包中创建子包LBJ 参见: IDEA中项目、模块和包的关系_idea中模块和项目-CSDN博客

应用层协议之DNS协议

一.应用层协议的相关数据传输格式 1.文本字符串格式 应用层主要是自定义协议,以点外卖为例: 客户点开软件,就是应用程序和服务器之间进行网络通信交互。请求和响应可以如下设置 请求:用户信息,位置信息&#xff0c…

Vue模块化开发步骤—遇到的问题—解决办法

目录 1.npm install webpack -g 2.npm install -g vue/cli-init 3.初始化vue项目 4.启动vue项目 Vscode初建Vue时几个需要注意的问题-CSDN博客 1.npm install webpack -g 全局安装webpack 直接命令提示符运行改指令会报错,operation not permitted 注意&#…

【QT入门】 Qt代码创建布局之水平布局、竖直布局详解

往期回顾: 【QT入门】 Qt实现自定义信号-CSDN博客 【QT入门】 Qt自定义信号后跨线程发送信号-CSDN博客 【QT入门】 Qt内存管理机制详解-CSDN博客 【QT入门】 Qt代码创建布局之水平布局、竖直布局详解 先看两个问题: 1、ui设计器设计界面很方便&#xf…

1学习使用axios

一、axios介绍: axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。它提供了一种简单的方法来发送 HTTP 请求,并且具有很多实用的功能,使得网络请求变得更加方便和可靠。 以下是 axios 的一些主要特点和功能&…

python判断当前日期是全年哪一天

设计者:ISDF 版本:v3..0 日期:04/01/2019设计者:ISDF 版本:v4..0 日期:03/27/2024 import datetime#闰年判断函数 def ys_leep_year(year):ys_leep Falseif (year % 400 0) or ((year % 4 0) and (year …

【每日力扣】452. 用最少数量的箭引爆气球与763. 划分字母区间

🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害。 452. 用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0…

SpringBoot学习之ElasticSearch下载安装和启动(Windows版)(三十)

本文先写windows下的下载安装和启动,后续有时间再补充其他环境下(Mac、Linux、Docker)的,这里我们后续对ElasticSearch简称为ES,读者习惯这一称呼就好。 一,ES下载 可以百度【ElasticSearch官网】或者直接点击这里的ES官网下载地址:​​​​​ Download Elasticsearch…

【 MyBatis 】| 关于多表联查返回 List 集合只查到一条的 BUG

目录 一. 🦁 写在前面二. 🦁 探索过程2.1 开端 —— 开始写 bug2.2 发展 —— bug 完成2.3 高潮 —— bug探究2.4 结局 —— 效果展示 三. 🦁 写在最后 一. 🦁 写在前面 今天又是 BUG 气满满的一天,一个 xxxMapper.xm…

聊聊低代码产品的应用场景

随着数字化转型的不断深入,企业对于快速开发和迭代软件应用的需求也越来越迫切。而在这样的背景下,低代码产品应运而生,成为了一种热门的技术解决方案。本文将解读低代码产品的定义并探讨其应用场景。 一、低代码产品的定义 低代码产品是一种…

恢复 Linux 上已删除的文件:extundelete 、PhotoRec (***)

为什么Linux的命令 rm 没有回收站呢?Trash-Cli:Linux 命令行回收站工具 (***) https://blog.csdn.net/ken2232/article/details/136981360 extundelete 直接 apt 安装,运行出现段错误,网络上给出的一种解决…

vscode添加gitee

1.创建仓库 2.Git 全局设置 3.初始化仓库 2.1 打开vscode打开需要上传到给git的代码文件 2.2.点击左边菜单第三个的源代码管理->初始化仓库 4.点击加号暂存所有更改 5.添加远程仓库 5.1 添加地址,回车 5.2 填写库名,回车 6.提交和推送 6.1 点击✔提交…

C++类的六个默认成员函数(详细解析与总结)

目录 前言: 一、构造函数 a.特点 b.注意事项 1.首先明确什么是默认构造函数 2.默认构造函数对内置类型与自定义类型的处理 c.总结 二、析构函数 a.特点 b.注意事项 1.什么时候写析构函数? 2.析构函数对内置类型与自定义类型的处理 c.总结 …

武汉星起航引领跨境电商新纪元,助力卖家扬帆远航全球市场

在全球化的商业浪潮中,跨境电商行业异军突起,成为连接全球市场的重要纽带。亚马逊,作为全球零售电商的巨擘,为无数卖家提供了走向国际市场的广阔舞台。在这片充满机遇与挑战的蓝海中,武汉星起航电子商务有限公司以其独…

R包安装失败怎么办?(一)msigdbr

R包安装失败 如果是网络原因(error connection),就使用本地安装的方法。如果是网络原因,通常会出现安装超时,或者网络无法连接的提示 当你把timeout 设置到1000之后还会报错,怎么办? options…

在 Linux 中安装 Jenkins【图文详细教程】

安装 Jenkins 的系统要求: 最少 256MB 可用内存最少 1GB 可用磁盘空间JDK 8 / 11 /17(Jenkins 是用 Java 写的,打包成 war 包) 查看 JDK 的版本 Java JDK 在 Linux 中的安装可以参考:https://www.yuque.com/u27599042/…

实物档案管理系统是做什么的

实物档案管理系统是用于管理和组织实物档案的信息系统。它的主要功能包括记录、查找、归档实物档案,以及提供相关的管理功能。 具体来说,玖拓智能实物档案管理系统可以帮助单位完成以下任务: 1. 档案登记与归档:将新收到的实物档案…