Qualcomm_Snapdragon_VR_SDK SvrPluginAndroid脚本简介(7)

本文将继续介绍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模式等操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值