protected virtual void Awake() { // Create the render texture. int horizontalResolution = Mathf.RoundToInt(RenderTextureAspectRatio * _renderTextureResolution); RenderTexture = new RenderTexture(horizontalResolution, _renderTextureResolution, 0) { format = RenderTextureFormat.ARGB32 }; RenderTexture.Create(); // Configure the render texture camera. RenderTextureCamera = GetComponent <Camera>(); RenderTextureCamera.aspect = RenderTextureAspectRatio; RenderTextureCamera.orthographicSize = CameraVerticalSize; RenderTextureCamera.targetTexture = RenderTexture; RenderTextureCamera.enabled = false; // Disable automatic updates RenderTextureCamera.Render(); // Create and orient the objects container. _renderTextureObjectsContainer = new GameObject("Objects") { layer = (int)CullingLayer.RenderToTexture, }; _renderTextureObjectsContainer.transform.SetParent(transform, false); _renderTextureObjectsContainer.transform.localPosition = new Vector3(-CameraVerticalSize * RenderTextureAspectRatio, -CameraVerticalSize, 1); }
public void UpdateTexture(bool force = false) { if (force) { RenderTextureCamera.Render(); } _textureUpdateRequired = !force; }
private void LateUpdate() { if (_textureUpdateRequired) { RenderTextureCamera.Render(); _textureUpdateRequired = false; } }