且举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。
——《逍遥游·北冥有鱼》庄周
零、文件清单(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