我正在编写一个使用Kinect的C#应用程序,我正在获取当前的输出并将其写入着色器资源并将其渲染为纹理,我的问题是Kinect(显然)仅以30fps运行,所以它严重限制了我的表现。
解决这个问题的最佳方法是多线程吗? 是否有某种设计模式可以帮助解决这类问题? 据我所知,我可能希望让kinect处理线程上的数据,然后在进程完成时访问它,但我不知道从哪里开始以安全的方式。
感谢您提供任何建议。
我目前正在使用OpenNI作为kinect驱动程序/ api,而SlimDX则用于渲染的directX端。
答案 0 :(得分:8)
我之前没有使用过Kinect,你没有指定你使用的驱动程序/包装器,但我怀疑它可能无关紧要。
您可能需要做的是以下内容:
有关c#中线程的优秀教程,我总是建议Albahari's Threading in C#。我还建议,如果您想了解更多关于如何加速应用程序的具体信息,您应该编辑您的问题并添加具体的详细信息,了解您现在的结构以及您正在使用的包装/驱动程序等。< / p>
答案 1 :(得分:1)
任何需要高性能的Kinect开发都应该使用池化模型代替事件模型。与此相辅相成,您最好的选择是打开一个线程并进行池化操作。 您可以使用具有事件模型的线程来进行长时间操作而不冻结用户界面。