d3d与dshow兼容于一个应用程序中的问题
我初学directX编程,想在一个程序中实现对两个摄像头实时抓图,并且,后面要用D3D渲染骨骼动画。
首先,在一个程序写了对两个USB摄像头实时抓图,并用GDI函数在程序中显示。然后,另一个程序,是用d3d做的骨骼动画的渲染。这两个程序都运行正确。
现在问题是,当合并这两个模块后,程序中只能抓到一帧DSHOW捕捉的图像,以后便抓到的图像,用GDI函数显示在窗口,窗口上依然一片空白。保存抓取的位图时,图像有大小,却没有任何图像信息。
抓图模块,是这样做的。建立采集过滤器图,就一个capture filter, 一个sample grabber, 一个null renderer。DSHOW中默订两个线程在管理这两个过滤器图,这两个过滤图一直处于运行状态。然后,在主线程中,有一个定时器,每隔50ms便从两个sample grabber中抓取一帧图像。
过滤器图,应该是正确的,而且,一直处于运行状态是没问题的。因为当后面,过滤器图用的是video renderer时,我可以把filter graph中流动的图像,通过IVideoWindow接口,实时地显示在窗口中。
但问题,如果用null renderer,并从sample grabber接口中抓取,只能抓到一帧。以后再也抓取不到了。
我很想知道,是哪些原因引发上面的问题,是D3D的影响呢?还是其它的呢?
这个问题在另一个论坛也发了,但觉得可能发这个论坛可能比较合适,请版主谅解。