live2d_基于Qt的Live2D示例(几乎都是官方给的代码就是啦!)

live2d_基于Qt的Live2D示例(几乎都是官方给的代码就是啦!)_第1张图片

太久没写什么东西了…本打算在疫情期间把某个很久以前写了之后忘记留档的东西重写一遍…

结果写到一半,突然发现Live2D这玩意实在是太好玩了(诶?

于是兴起了把Live2D模型渲染到屏幕上的想法

首先,Live2D在c++语言下支持的桌面端引擎…DirectX、OpenGL、Cocos2d-x。

因为DX不同版本之间变化太大,Cocos2d-x我完全不会……所以最后我选择了OpenGL的 Cubism SDK。

当然,因为Qt也是支持OpenGL的…所以这里我还得以偷个懒,借用一些Qt的内容。

(后面也会说到,最后一段时间我实际上是在线程同步的大坑里埋着…不得不感谢Qt的信号槽机制,让我免去了手搓消息队列的麻烦…)

首先,我们从网上下载Cubism SDK。

https://cubism.live2d.com/sdk-native/bin/CubismSdkForNative-4-r.1.zip​cubism.live2d.com

因为涉及到G开头的某个网站,所以有可能会访问不上,还请自行解决(

下载下来,先build一下demo…

CMake Error at CMakeLists.txt:67 (message):
[Demo] Unsupported Visual C++ compiler used.

嗯,似乎是我刚更新了msvc编译器版本的问题…

思考一下,似乎和v141 toolset差别不大?

于是莽了上去。略微修改一下CMakeLists.txt。参考一下这里:

MSVC_VERSION - CMake 3.17.0 Documentation​cmake.org

elseif

下面加上

elseif

从而使得此CMakeLists.txt支持v142工具集……

然后把glew和glfw两个目录加入项目中,使得项目正常编译

效果如下

live2d_基于Qt的Live2D示例(几乎都是官方给的代码就是啦!)_第2张图片

搞定了这个…接下来我们开始分析这里面的代码文件。

  • LAppAllocator类:一个简易的基于malloc的内存分配器。
  • LAppDefine类:程序中用到的常量定义。
  • LAppDelegate类:整个程序中若干对象的生命期管理,以及用户交互部分。
  • LAppLive2DManager类:对模型进行管理。
  • LAppModel类:单个模型的动作与渲染等。
  • LAppPal类:某些辅助函数,跳过就好。<

你可能感兴趣的:(live2d,qt,子窗口写到线程就卡死)