1

我正在开发 XNA 游戏。在我的游戏中,我使用 KinectColor StreamDepth Stream仅获取玩家的图像。为此,我检查深度像素并找到带有PlayerIndex > 0. 然后我用方法将这些深度点映射到颜色点,MapDepthPointToColorPoint并从彩色视频中获取这些像素的颜色。

这可以正常工作,但性能非常糟糕(尤其是在游戏中)。当我关闭颜色流并将像素设置为黑色(我的意思是带有播放器索引的像素)时,一切都很顺利。但是当我启用颜色流时它不是很有效。

我为此尝试了两件事AllFramesReady

1-

   using (ColorImageFrame colorVideoFrame = imageFrames.OpenColorImageFrame()) 
   {
      //color logic
   }
   using (DepthImageFrame depthVideoFrame = imageFrames.OpenDepthImageFrame()) 
   {
      //depth logic 
   }

2-

   using (ColorImageFrame colorVideoFrame = imageFrames.OpenColorImageFrame()) 
   {
      colorReceived=true;
   }
   if (colorReceived){
      //color logic
   }
   using (DepthImageFrame depthVideoFrame = imageFrames.OpenDepthImageFrame()) 
   {
      depthReceived=true; 
   }
   if (depthReceived){
      //depth logic
   }

第二个似乎有更好的性能,因为它在using块之外应用颜色和深度逻辑,并尽快将资源返回给 Kinect。但是当第二个玩家出现时,性能会急剧下降。但有时当我使用第二种选择时,播放器的图像会消失 1 或 2 帧。

我还能做些什么来提高颜色和深度流的性能?谢谢你的帮助。

4

0 回答 0