您的位置:首页 > 编程语言 > Go语言

Qualcomm_Snapdragon_VR_SDK SvrEye脚本简介(8)

2018-03-09 11:37 375 查看
本文中将介绍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为3private const int bufferCount = 3;
currentTextureIndex为当前Buffer对应图像序列号,
private int currentTextureIndex = 0;

eyeTextures变量保存的是当前左右眼的图像RenderTexture, private RenderTexture[] eyeTextures = new RenderTexture[bufferCount];SwapBuffer通过计算currentextureIndex的值之后获取当前的targetTexture指针,赋值给目标Camera的targetTexture,进而完成左右眼图像Buffer的刷新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: