コード例 #1
0
        public static RGBRawDataFrame GetRGBFrame()
        {
            if (Time.frameCount != _lastFrame)
            {
                _currentFrame = m_RGBFrames.Dequeue();
                _lastFrame    = Time.frameCount;
            }

            return(_currentFrame);
        }
コード例 #2
0
        public static RGBRawDataFrame GetRGBFrame()
        {
            if (Time.frameCount != m_LastFrame && m_RGBFrames.Count > 0)
            {
                m_CurrentFrame = m_RGBFrames.Dequeue();
                m_LastFrame    = Time.frameCount;
            }

            return(m_CurrentFrame);
        }
コード例 #3
0
        protected override void OnLoadRawTextureData(RGBRawDataFrame rgbRawDataFrame)
        {
            m_Texture.LoadRawTextureData(rgbRawDataFrame.data);
            m_Texture.Apply();

            CurrentFrame.timeStamp = rgbRawDataFrame.timeStamp;
            CurrentFrame.texture   = m_Texture;
            FrameCount++;

            OnUpdate?.Invoke(CurrentFrame);
        }
コード例 #4
0
 public void Enqueue(RGBRawDataFrame obj)
 {
     lock (m_LockObj)
     {
         m_Queue.Enqueue(obj);
         if (m_Queue.Count > Limit)
         {
             var frame = m_Queue.Dequeue();
             m_ObjectPool.Put <RGBRawDataFrame>(frame);
         }
     }
 }
コード例 #5
0
 public static bool MakeSafe(IntPtr textureptr, int size, UInt64 timestamp, ref RGBRawDataFrame frame)
 {
     if (textureptr == IntPtr.Zero || size <= 0)
     {
         return(false);
     }
     if (frame.data == null || frame.data.Length != size)
     {
         frame.data = new byte[size];
     }
     frame.timeStamp = timestamp;
     Marshal.Copy(textureptr, frame.data, 0, size);
     return(true);
 }
コード例 #6
0
        private void UpdateTexture()
        {
            if (!DidUpdateThisFrame || !IsPlaying)
            {
                return;
            }

            RGBRawDataFrame rgbRawDataFrame = NRRgbCamera.GetRGBFrame();

            if (rgbRawDataFrame.data == null)
            {
                Debug.LogError("Get Rgb camera data faild...");
                return;
            }

            OnLoadRawTextureData(rgbRawDataFrame);
        }
コード例 #7
0
        private void UpdateTexture()
        {
            if (!NRRgbCamera.HasFrame())
            {
                return;
            }
            RGBRawDataFrame rgbRawDataFrame = NRRgbCamera.GetRGBFrame();

            m_texture.LoadRawTextureData(rgbRawDataFrame.data);
            m_texture.Apply();

            CurrentFrame.timeStamp = rgbRawDataFrame.timeStamp;
            CurrentFrame.texture   = m_texture;
            FrameCount++;

            OnUpdate?.Invoke(CurrentFrame);
        }
コード例 #8
0
        private static void QueueFrame(IntPtr textureptr, int size, UInt64 timestamp)
        {
            if (!isRGBCamStart)
            {
                NRDebugger.LogError("rgb camera not stopped properly, it still sending data.");
                return;
            }
            RGBRawDataFrame frame  = FramePool.Get <RGBRawDataFrame>();
            bool            result = RGBRawDataFrame.MakeSafe(TexturePtr, size, timestamp, ref frame);

            if (result)
            {
                m_RGBFrames.Enqueue(frame);
            }
            else
            {
                FramePool.Put <RGBRawDataFrame>(frame);
            }
        }
コード例 #9
0
        private void UpdateTexture()
        {
            if (!NRRgbCamera.HasFrame())
            {
                return;
            }
            RGBRawDataFrame rgbRawDataFrame = NRRgbCamera.GetRGBFrame();

            if (m_texture == null || m_texture.width != NRRgbCamera.Resolution.width ||
                m_texture.height != NRRgbCamera.Resolution.height)
            {
                m_texture = new Texture2D(NRRgbCamera.Resolution.width, NRRgbCamera.Resolution.height, TextureFormat.RGB24, false);
            }
            m_texture.LoadRawTextureData(rgbRawDataFrame.data);
            m_texture.Apply();

            CurrentFrame.timeStamp = rgbRawDataFrame.timeStamp;
            CurrentFrame.texture   = m_texture;

            if (OnUpdate != null)
            {
                OnUpdate(CurrentFrame);
            }
        }
コード例 #10
0
 /// <summary>
 /// Load raw texture data.
 /// </summary>
 /// <param name="rgbRawDataFrame"></param>
 protected virtual void OnLoadRawTextureData(RGBRawDataFrame rgbRawDataFrame)
 {
 }