void TakePhoto(Renderer preview) { if (preview.material.mainTexture == null) { preview.material.mainTexture = new Texture2D(bufferWidth, bufferHeight, bufferFormat, false); } var tex = preview.material.mainTexture as Texture2D; //capture.CopyFrameToTexture(tex); capture.CopyFrameToBuffer(buffer);//bufferにフレームのバイナリをセット tex.LoadRawTextureData(buffer); tex.Apply(); }
/// <summary> /// 新しいフレームを取得したときのイベントハンドラ /// フレームのバイナリデータを取得しテクスチャに変換する /// </summary> /// <param name="frameLength"></param> private void CameraPreviewCapture_OnFrameArrived(int frameLength) { if (_latestImageBytes == null || _latestImageBytes.Length < frameLength) { _latestImageBytes = new byte[frameLength]; } _cameraPreviewCapture.CopyFrameToBuffer(_latestImageBytes); UnityEngine.WSA.Application.InvokeOnAppThread(() => { texture.LoadRawTextureData(_latestImageBytes); texture.Apply(); }, false); }