Qualcomm_Snapdragon_VR_SDK SvrEye脚本简介(9)

上文中提到,在SvrEye脚本中OnPreRender方法中执行了SwapBuffer切换Buffer的操作。在SvrEye中默认的buffer数量为3,

指的是在程序运行过程中,保存前后两帧图像的左右预备的buffer,之后没帧渲染时会切换前后的帧图像,通过这种方式可以有效的防止VR画面的延迟。

完成切换Buffer的操作后,SDK中需要对Buffer的图像进行赋值,这部分逻辑在OnPostRender方法中,该方法调用了RecreateBufferIsDirty方法,根据eType类型为保存了图像指针类型的数组TextureId进行赋值。

全部的OnPostRender方法的代码如下:


void OnPostRender()
    {
        RecreateBuffersIfDirty();
        if (OnPostRenderListener != null)
        {
            OnPostRenderListener();
        }
    }
	
    void RecreateBuffersIfDirty()
    {
        if (dirty)
        {
            if (recreateBuffersCoroutine != null)
            {
                StopCoroutine(recreateBuffersCoroutine);
                recreateBuffersCoroutine = null;
            }

            recreateBuffersCoroutine = StartCoroutine(RecreateBuffersDeferred());
            dirty = false;
        }
    }
	
    IEnumerator RecreateBuffersDeferred()
    {
        int i = 0;
        while (i < bufferCount)
        {
            int index = currentTextureIndex - 1;
            index = index >= 0 ? index : bufferCount - 1;

            if (eyeTextures[index] != null)
                eyeTextures[index].Release();

            switch (imageType)
            {
                case eType.RenderTexture:
                    eyeTextures[index] = new RenderTexture((int)(resolution.x * resolutionScaleFactor), (int)(resolution.y * resolutionScaleFactor), depth, format);
                    eyeTextures[index].antiAliasing = antiAliasing;
                    eyeTextures[index].Create();
                    eyeTextureIds[index] = eyeTextures[index].GetNativeTexturePtr().ToInt32();
                    Debug.Log("Re-create Render Texture with ID: " + eyeTextureIds[index] + " Width: " + eyeTextures[index].width + " Height: " + eyeTextures[index].height + " AA: " + eyeTextures[index].antiAliasing);
                    break;

                case eType.StandardTexture:
                    if (imageTexture) eyeTextureIds[index] = imageTexture.GetNativeTexturePtr().ToInt32();
                    break;

                case eType.EglTexture:
                    eyeTextureIds[index] = 0;
                    break;
            }

            int prevTextureIndex = currentTextureIndex;
            yield return new WaitUntil(() => currentTextureIndex != prevTextureIndex);

            i++;
        }
        yield break;
    }

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
Qualcomm_mde.win 是指高通移动开发平台(Qualcomm Mobile Development Environment)的一个软件组件。 高通是一家全球领先的无线通信技术公司,它开发了一系列芯片和软件解决方案,用于移动通信设备,如智能手机、平板电脑和智能穿戴设备等。Qualcomm_mde.win 是高通移动开发平台的一个重要组成部分,旨在为开发者提供一个集成的开发环境和工具,以便他们能够更轻松地开发和测试基于高通芯片的应用程序和软件。 Qualcomm_mde.win 提供了多种功能和工具,包括调试器、编译器、模拟器和性能分析器等。开发者可以使用这些工具来进行应用程序的开发、调试和测试。它还支持多种开发语言和框架,如C++、Java和Android等,使开发者能够根据自己的喜好和需求选择适合的开发方法。同时,Qualcomm_mde.win 还提供了丰富的开发文档和示例代码,帮助开发者快速上手和解决问题。 使用 Qualcomm_mde.win 可以帮助开发者更高效地进行移动应用程序的开发和测试工作。它提供了许多强大的工具和功能,使开发者能够更好地理解和调试应用程序在高通芯片上的运行情况。无论是入门级的开发者还是经验丰富的专业人士,都可以从 Qualcomm_mde.win 中受益,并提高其开发工作的效率和质量。 总之,Qualcomm_mde.win 是高通移动开发平台的一个重要组件,为开发者提供了丰富的开发工具和环境,使他们能够更轻松地开发和测试基于高通芯片的应用程序和软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值