三、【易 AI】Live2d 移植 QT

且举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。

——《逍遥游·北冥有鱼》庄周

零、文件清单(Release X64环境)

文件源于官方 SDK 、生成的 Demo 项目、以及操作系统,

1、系统库

需要找到项目生成的四个库以及对应的头文件,Framework.lib、glew32.lib、glfw3.lib、libglew32.lib,

1.1、Framework

Framework 库把 src 下 .hpp .cpp 文件以及文件夹全部拷贝,

1.2、GLFW 与 GLEW

注意保留 GLFW 目录,

注意保留 GL 目录,

2、官方库

官方 SDK 提供的 Core 库(D:\CubismSdkForNative-4-r.7\Core\lib),根据生成项目时选择 MD 或者 MT,

2.1、Core

Live2DCubismCore_MT.lib、Live2DCubismCore_MTd.lib,

备注:v143是Vs2022,v142是Vs2019,v141是Vs2017,

3、系统库

从项目->属性->链接器中,可以看到项目需要引入的系统库,

Framework\Release\Framework.lib
glfw\src\Release\glfw3.lib
opengl32.lib
glu32.lib
-NODEFAULTLIB:libcmt.lib
D:\CubismSdkForNative-4-r.7\Samples\OpenGL\Demo\proj.win.cmake\..\..\..\..\Core\lib\windows\x86_64\143\Live2DCubismCore_MT.lib
lib\Release\libglew32.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib

主要需要引用下面这五个库,

opengl32.lib
glu32.lib
kernel32.lib
user32.lib
gdi32.lib

4、第三方库

stb_image.h,

5、源代码

Demo 下的源代码,包括头文件,

源代码统一打包到 live2d 文件夹下,

6、文件清单

整合好的文件清单目录结构如下,

├───inc
│   ├───Core
│   ├───Framework
│   │   ├───Effect
│   │   ├───Id
│   │   ├───Math
│   │   ├───Model
│   │   ├───Motion
│   │   ├───Physics
│   │   ├───Rendering
│   │   │   ├───Cocos2d
│   │   │   ├───D3D11
│   │   │   ├───D3D9
│   │   │   ├───Metal
│   │   │   └───OpenGL
│   │   ├───Type
│   │   └───Utils
│   ├───GL
│   ├───GLFW
│   └───stb
├───libs_debug
│   ├───Core
│   │   └───lib
│   │       └───windows
│   │           └───x86_64
│   │               └───142
│   ├───Framework
│   │   └───lib
│   ├───GL
│   │   └───lib
│   └───GLFW
│       └───lib
├───libs_release
│   ├───Core
│   │   └───lib
│   │       └───windows
│   │           └───x86_64
│   │               └───142
│   ├───Framework
│   │   └───lib
│   ├───GL
│   │   └───lib
│   └───GLFW
│       └───lib
└───live2d

一、移植思路

QT 封装了 OpenGL 类 QOpenGLWidget、QOpenGLWindow,我们通过自定义实现该类将模型渲染到自定义的窗口上,

二、QOpenGLWidget

1、QT 工程

注意这里编译器使用 MSVC 对应的版本,

2、配置 QT

配置文件清单里面的链接库、源文件、头文件,

在 mainwindow.h 中手动链接系统库,

#pragma comment(lib, "kernel32.lib")
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "gdi32.lib")
#pragma comment(lib, "o

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

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

相关文章

2024骨传导耳机排行榜:盘点最值得买入手的5大热门款式!

要问目前市面上哪款蓝牙耳机最火爆,那非骨传导耳机莫属,它凭借不入耳佩戴,健康又舒适的特点,深得消费者的喜欢,但随着骨传导耳机市场逐渐热门,市面上开始出现越来越多的耳机品牌,它们的性能配置…

并发学习26--多线程 异步模式之工作线程

定义:让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。线程池便是这种模式。 饥饿: 固定大小线程池也会有饥饿现象。 若一个线程池有两个线程,能够处理两种任务。但是两种任务间有先后顺序。若来一个任…

TS封装axios并约束请求参数以及响应的类型

封装一个简单的axios src/utils/axiosInstance.ts&#xff1a;其中定义了基本返回数据的类型 import axios, {AxiosInstance,AxiosResponse,AxiosError,AxiosRequestConfig, } from "axios"// 定义基本返回数据类型 export interface ApiResponse<T> {code: …

iOS:如何安全且优雅地操控数组元素

前言 在 iOS 开发的世界里&#xff0c;数组(Array)的操作频率高得令人咋舌。数组贯穿于我们每一个功能的实现和每一行代码的编写之中&#xff0c;一手托起了数据结构的半边天。但这位工具之王&#xff0c;有时候也会变身为导致程序崩溃的罪魁祸首。当访问越界&#xff0c;当插…

如何批量替换文件名中的字符?汇总3个超简单办法

如何批量替换文件名中的字符&#xff1f;在现代社会中&#xff0c;我们的生活充斥着大量的数字化文件&#xff0c;如照片、文档、音频和视频等。然而&#xff0c;有时这些文件的命名可能并不理想&#xff0c;包含了不必要的字符或格式。这时&#xff0c;批量替换文件名中的字符…

MySQL 主从 AUTO_INCREMENT 不一致问题分析

本文介绍了 MySQL5.7 中常见的replace into 操作造成的主从auto_increment不一致现象&#xff0c;一旦触发了主从切换&#xff0c;业务的正常插入操作会触发主键冲突的报错提示。 一、问题描述 1.1 问题现象 在 MySQL 5.7 版本中&#xff0c;REPLACE INTO 操作在表存在自增主键…

基于javassm实现的旅游景点线路网站

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.…

【CVE复现计划】CVE-2024-0195

CVE-2024-0195 简介&#xff1a; SpiderFlow是新一代开源爬虫平台&#xff0c;以图形化方式定义爬虫流程&#xff0c;不写代码即可完成爬虫。基于springbootlayui开发的前后端不分离,也可以进行二次开发。该系统/function/save接口存在RCE漏洞&#xff0c;攻击者可以构造恶意命…

【大功率汽车大灯升压方案】LED恒流驱动芯片FP7208升压车灯调光应用,PWM内部转模拟,调光深度1%,无频闪顾虑,低亮无抖动

宝马X5前中排座椅宽大舒适&#xff0c;车厢内储物空间丰富。操控性能极佳&#xff0c;底盘稳扎精良。原车为氙气灯&#xff0c;其实宝马的氙气大灯配的比其他车型要好&#xff0c;照明效果是没得说的。但是不管什么灯久了都会出现光衰的情况。下面这辆宝马X5车灯已老化严重。 宝…

Jmeter ServerAgent windows启动报错 NoClassDefFoundError

下载ServerAgent-2.2.3 后执行startAgent.bat 报错如下&#xff1a; 尝试解决方案一&#xff1a; 将整个ServerAgent-2.2.3文件夹复制到jdk目录下的bin目录下&#xff0c;然后重新进入目录执行startAgent.bat

MySQL如何创建存储过程

工作中有时候需要自己去创建存储过程&#xff0c;然后调用存储去获得一些数据等&#xff0c;接下来就给大家介绍下MySQL如何创建存储过程。 语法&#xff1a; CREATE PROCEDURE 存储程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过…

python 如何生成uuid

UUID&#xff08;Universally Unique Identifier&#xff09;是通用唯一识别码&#xff0c;在许多领域用作标识&#xff0c;比如我们常用的数据库也可以用它来作为主键&#xff0c;原理上它是可以对任何东西进行唯一的编码的。作为新手一看到类似varchar(40)这样的主键就觉得有…