示例#1
0
    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);
    }