
Cpp
BugattiEngine
这个作者很懒,什么都没留下…
展开
-
不设置静态变量判断一个静态类是否已经初始化
不用静态变量的话可以增加代码的简洁度,采用静态函数代替,由于返回的是引用,所以该函数可以直接赋值,isStartedUp()=true;其次由于静态变量在函数块内部只初始化一次并存在,所以可以一直使用/** Checks has the Module been started up. */static bool& isStartedUp(){ static bool inst =...原创 2018-12-03 10:20:22 · 373 阅读 · 0 评论 -
高通VR源代码分析[一] 程序的启动入口
从Android端利用jni调用C++代码AndroidMainSvrAndroidMain.cppSrvApplicationInitialize()AndroidMain找到Android端运行的Java文件可以发现只有loadlibrary相关,所以在载入library后应该会自动执行一系列的初始化执行动作static{ System.loadLibrary( "svrapi" ...原创 2018-12-28 19:26:01 · 986 阅读 · 0 评论 -
高通VR源代码分析[二] SvrApplication应用管理类
SrvApplication找到SimpleVR可以发现jni下有个c++类叫app.点开发现这个类继承了Srv::SrvApplication类在高通提供的 SDK 中,所有的类都在Srv命名空间下,这个类就是程序启动需要重写的基类。需要重写的函数大概有以下几个, virtual void LoadConfiguration() = 0; virtual v...原创 2018-12-29 10:36:58 · 1078 阅读 · 0 评论 -
高通VR源代码分析[三]- Unity插件的工作原理
打开Unity文件夹 svrPlugin.cs是插件的基类SvrPluginAndroid 才是真正的实现,里面包含了一系列的导入方法,导出方法的cpp文件是放在svrUnity文件夹里SvrManager是插件启动的入口,其中Start被写成了IEnumerator的形式,这样可以进行延迟的加载操作。SvrEye是绑在相机上并获取输入画面的,其中包含两个回调函数 public deleg...原创 2019-01-02 10:46:58 · 1157 阅读 · 0 评论 -
高通Vr源代码分析[4] svrBeginVr,svrEndVr所做的工作
svrBeginVr()这个函数只在开始渲染的时候调用一下。1.初始化定时器2.MotionVector检测和参数初始化3.HeuristicPredictedTime分配存储4.获取Vr工作模式5.获取track工作模式6.创建并赋值modeContext7.warp和vsync的线程锁创建8.warp frame param 创建以及recenter rotation9.创建...原创 2019-01-02 11:04:04 · 570 阅读 · 0 评论 -
C++中va_list 实现动态变长变量输入
Text(const char* fmt, ...){ va_list args; va_start(args, fmt); TextV(fmt, args); va_end(args);}原创 2019-01-30 15:52:18 · 962 阅读 · 0 评论