using System; using UnityEngine; using UnityEngine.VR; public class OVRRTOverlayConnector : MonoBehaviour { private void ConstructRenderTextureChain() { for (int i = 0; i < 3; i++) { this.overlayRTChain[i] = new RenderTexture(this.srcRT.width, this.srcRT.height, 1, this.srcRT.format, RenderTextureReadWrite.sRGB); this.overlayRTChain[i].antiAliasing = 1; this.overlayRTChain[i].depth = 0; this.overlayRTChain[i].wrapMode = TextureWrapMode.Clamp; this.overlayRTChain[i].hideFlags = HideFlags.HideAndDontSave; this.overlayRTChain[i].Create(); this.overlayTexturePtrs[i] = this.overlayRTChain[i].GetNativeTexturePtr(); } } private void Start() { this.ownerCamera = base.GetComponent(); this.srcRT = this.ownerCamera.targetTexture; this.ConstructRenderTextureChain(); } private void OnPostRender() { if (this.srcRT) { Graphics.Blit(this.srcRT, this.overlayRTChain[this.overlayRTIndex]); OVROverlay component = this.ovrOverlayObj.GetComponent(); component.OverrideOverlayTextureInfo(this.overlayRTChain[this.overlayRTIndex], this.overlayTexturePtrs[this.overlayRTIndex], VRNode.LeftEye); this.overlayRTIndex++; this.overlayRTIndex %= 3; } } public int alphaBorderSizePixels = 3; private const int overlayRTChainSize = 3; private int overlayRTIndex; private IntPtr[] overlayTexturePtrs = new IntPtr[3]; private RenderTexture[] overlayRTChain = new RenderTexture[3]; public GameObject ovrOverlayObj; private RenderTexture srcRT; private Camera ownerCamera; }