本文将继续介绍SvrPluginAndroid中调用的SDK中dll方法及作用:
[DllImport("svrplugin")]
private static extern void SvrSetTrackingModeEventData(int mode);
[DllImport("svrplugin")]
private static extern void SvrSetPerformanceLevelsEventData(int newCpuPerfLevel, int newGpuPerfLevel);
在这段代码中方法SvrSetTrackingModeEventData的作用在上一篇文章中已经提到,是设置底层SDK的VR运行模式。
其中mode的值分为3Dof和6Dof两种。
而方法SvrSetPerformanceLevelsEventData的作用是设置SDK中VR模式运行过程中的CPU和GPU的运行等级,具体的使用在前面的文章中也已经介绍了。
[DllImport("svrplugin")]
private static extern int SvrGetPredictedPose(ref float rx,
ref float ry,
ref float rz,
ref float rw,
ref float px,
ref float py,
ref float pz,
int frameIndex);
方法SvrGetPredictedPose的作用是从SDK底层中读取当前头部的位置和朝向信息。
返回值int如果是1表示当前读取头部数据正常,如果返回为0代表当前读取头部数据异常。
而在传入的参数中rx,ry,rz,rw,px,py,pz的变量前都添加了ref标记,表示当前参数以引用变量的方式传入。
其中rx,ry,rz,rw表示当前头部朝向的四元数数值,可以直接在unity中用于Transform.rotation的赋值上。
px,py,pz表示当前头部位置信息的坐标值,可用于Transform.position变量的赋值上。
frameIndex表示当前SDK的运行帧数,方法的作用也是读取frameIndex当前帧的头部位置和朝向数据。
[DllImport("svrplugin")]
private static extern bool SvrRecenterTrackingPose();
[DllImport("svrplugin")]
private static extern int SvrGetTrackingMode();
方法SvrRecenterTrackingPose表示调用底层dll中重置头部朝向数据的方法。
SvrGetTrackingMode返回的是当前SDK中运行的VR模式。