Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(7)

原创 2018年04月12日 14:31:14

本文将继续介绍SvrPluginAndroid的相关代码:

	public override IEnumerator BeginVr(int cpuPerfLevel, int gpuPerfLevel)
	{
        //yield return new WaitUntil(() => SvrIsRunning() == false);  // Wait for EndVr

        yield return base.BeginVr(cpuPerfLevel, gpuPerfLevel);

        // float[6]: x, y, z, w, u, v
        float[] lowerLeft = { -1f, -1f, 0f, 1f, 0f, 0f };
        float[] upperLeft = { -1f,  1f, 0f, 1f, 0f, 1f };
        float[] upperRight = { 1f,  1f, 0f, 1f, 1f, 1f };
        float[] lowerRight = { 1f, -1f, 0f, 1f, 1f, 0f };
        SvrSetupLayerCoords(0, -1, lowerLeft, lowerRight, upperLeft, upperRight);    // Eye/All
        SvrSetupLayerCoords(1, -1, lowerLeft, lowerRight, upperLeft, upperRight);    // Overlay/All

        SvrSetPerformanceLevelsEventData(cpuPerfLevel, gpuPerfLevel);

        yield return new WaitUntil(() => SvrCanBeginVR() == true);
        IssueEvent (RenderEvent.BeginVr);
        yield return new WaitUntil(() => SvrIsRunning() == true);
    }

在SvrPluginAndroid脚本中重写了父类SvrPlugin中的BeginVR方法。

BeginVR方法的作用是开始VR模式,分别传入cpu和gpu的运行等级。这部分逻辑已在之前文章中介绍过了。

不了解的读者可以翻阅之前的博客。

在SvrPluginAndroid脚本的BeginVR方法中,首先运行了父类BeginVR方法。

 yield return base.BeginVr(cpuPerfLevel, gpuPerfLevel);

之后定义了上下左右方位的屏幕坐标:lowerleft、upperleft、upperright、lowerright

调用SDK中Android底层so的SvrSetupLayerCoords方法设置Eye Camera以及OverLayCamera的坐标。

调用SvrSetPerformanceLevelsEventData想底层SDK代码中设置cpu和gpu的运行等级。

 SvrSetPerformanceLevelsEventData(cpuPerfLevel, gpuPerfLevel);

之后判断SvrCanBeginVR

可以开启VR模式后向GPU发送渲染事件

IssueEvent (RenderEvent.BeginVr);

至此,BeginVR的相关逻辑介绍完毕。

主要完成的工作是向底层SDK代码中设置cpu和gpu的等级,开始运行VR模式等操作

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(9)

public override void SetFoveationParameters(float focalPointX, float focalPointY, float foveationGai...
  • CONGLF
  • CONGLF
  • 2018-04-12 14:48:16
  • 93

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(14)

public override void Shutdown() { IssueEvent (RenderEvent.Shutdown); base.Shutdow...
  • CONGLF
  • CONGLF
  • 2018-04-12 15:19:46
  • 84

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(12)

本文将介绍SvrPluginAndroid脚本中的Submit方法,该方法的作用是渲染左右眼图像,是SvrPlugin中VR模式实现的核心代码。 public override void Sub...
  • CONGLF
  • CONGLF
  • 2018-04-12 15:08:57
  • 88

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(15)

在SvrPluginAndroid中还提供了一些手柄的操作方法。Qcom VRSDK中手柄兼容的是Ximmerse手柄,方便开发这快速的连接手柄开发相关程序。具体的代码如下: //----------...
  • CONGLF
  • CONGLF
  • 2018-04-12 15:23:08
  • 72

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(1)

SvrPluginAndroid脚本继承了基类SvrPlugin脚本,适用与Android的运行环境,实现了SvrPlugin中的关键方法,具体的代码结构如下:using UnityEngine; u...
  • CONGLF
  • CONGLF
  • 2018-03-14 14:10:43
  • 343

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(13)

public override void SubmitFrame(int frameIndex, float fieldOfView, int frameType)  {         int i;...
  • CONGLF
  • CONGLF
  • 2018-04-12 15:15:31
  • 88

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(16)

本文将对Qcom VR SDK中手柄相关的代码做简单的讲解。 //-------------------------------------------------------------------...
  • CONGLF
  • CONGLF
  • 2018-04-12 15:26:50
  • 73

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(6)

前几篇文章中已经系统介绍了SvrPluginAndroid脚本中调用的dll底层方法。细心的读者可以观察到所有的方法中都是private 的私有方法。 于是在SvrPluginAndroid中在此基础...
  • CONGLF
  • CONGLF
  • 2018-03-22 14:29:34
  • 320

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(8)

public override void EndVr() { base.EndVr(); IssueEvent (RenderEvent.EndVr); } pu...
  • CONGLF
  • CONGLF
  • 2018-04-12 14:41:00
  • 59

Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(17)

到了本章节,SvrPluginAndroid脚本的全部代码已经介绍完毕。SvrPluginAndroid集成了SvrPlugin类,是SDK在Android平台上适配的VR模式相关方法和逻辑脚本。其中...
  • CONGLF
  • CONGLF
  • 2018-04-19 10:13:51
  • 11
收藏助手
不良信息举报
您举报文章:Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(7)
举报原因:
原因补充:

(最多只允许输入30个字)