Qualcomm_Snapdragon_VR_SDK SvrEye脚本简介(8)

本文中将介绍SDK中SvrEye脚本Buffer相关的逻辑代码:

 void OnPreRender()
    {
        SwapBuffers();

        if (OnPreRenderListener != null)
        {
            OnPreRenderListener();
        }
    }

在SvrEye中的OnPreRender函数中包含了SwapBuffers方法,方法的作用是切换当前的buffer图像。

OnPreRender方法的作用是在程序运行周期中,每一帧图像渲染之前执行的方法。

而OnRreRenderListener定义为delegate类型,监听每一帧图像渲染前的执行事件。

    public delegate void OnPreRenderCallback();
    public OnPreRenderCallback OnPreRenderListener;

SwapBuffers方法的具体实现如下:

void SwapBuffers()
    {
        if (imageType != eType.RenderTexture) return;

        currentTextureIndex = ++currentTextureIndex % bufferCount;
        var targetTexture = eyeTextures[currentTextureIndex];
        if (targetTexture == null) return;

        for (int i = 0; i < mainCameras.Length; i++)
        {
            mainCameras[i].targetTexture = targetTexture;
        }
        targetTexture.DiscardContents();
    }

在这个方法中包含了几个关键的变量,其中bufferCount为当前应用的buffer数量,默认的bufferCount为3

private const int bufferCount = 3;

currentTextureIndex为当前Buffer对应图像序列号,

private int currentTextureIndex = 0;

eyeTextures变量保存的是当前左右眼的图像RenderTexture,

 private RenderTexture[] eyeTextures = new RenderTexture[bufferCount];

SwapBuffer通过计算currentextureIndex的值之后获取当前的targetTexture指针,赋值给目标Camera的targetTexture,进而完成左右眼图像Buffer的刷新。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值