(第一次写,有错误恳请指正XD)
(希望能帮助到感兴趣的小伙伴)
(看客别看到这么多代码就想走!! 后面有生成示例:3)
先放张图介绍一下各个类的基本功能
首先进入程序入口
int main(int argc, char* argv[])
{
// create the application instance if (LAppDelegate::GetInstance()->Initialize() == GL_FALSE) //分配器初始化 {
return 1;
}
LAppDelegate::GetInstance()->Run(); //运行 return 0;
}
一、先看bool LAppDelegate::Initialize()
//首先是gl窗口的生成(具体请看https://learnopengl-cn.github.io/)//注册回调函数 glfwSetMouseButtonCallback(_window, EventHandler::OnMouseCallBack);
glfwSetCursorPosCallback(_window, EventHandler::OnMouseCallBack);
//然后是一系列初始化 _view->Initialize(); //范围初始化
InitializeCubism(); //Cubism初始化
SetRootDirectory(); //路径设置
LAppLive2DManager::GetInstance(); //模型管理类初始化
_view->InitializeSprite(); //背景及其控件初始化
范围设定 有需求可以更改..
Cubism初始化无脑CtrlCV
背景和控件的话最终可能需要去掉 自己调用所使用的接口 所以..有需要再说吧(其实是没研究到)
(一)模型管理类LAppLive2DManager
static LAppLive2DManager* GetInstance(); //指针获取
static void ReleaseInstance(); //指针释放
LAppModel* GetModel(Csm::csmUint32 no) const; //根据下标获取模型
void ReleaseAllModel(); //释放所有模型
void OnDrag(Csm::csmFloat32 x, Csm::csmFloat32 y) const; //模型跟随鼠标
void OnTap(Csm::csmFloat32 x, Csm::csmFloat32 y); //表情触发
void OnUpdate() const; //模型参数更新
void NextScene(); //切换下一个模型
void ChangeScene(Csm::csmInt32 index); //根据坐标切换模型
Csm::csmUint32 GetModelNum() const; //获取模型数
1.LAppLive2DManager初始化
LAppLive2DManager::LAppLive2DManager()
: _viewMatrix(NULL) //背景矩阵? , _sceneIndex(0) //当前模型下标{
ChangeScene(_sceneIndex); //切换到第一个模型}
2.ChangeScene //根据坐标切换模型
获取文件到加载模型的主要代码
std::string model = ModelDir[index]; //模型名称数组 //路径获取 std::string modelPath = LAppDelegate::GetInstance()->GetRootDirectory() + ResourcesPath + model + "/";
std::string modelJsonName = ModelDir[index];
modelJsonName += ".