DirectDraw7.0播放RGB24序列, 有没有现实一点的转色深的方法?

DirectDraw7.0播放RGB24序列, 有没有现实一点的转色深的方法?

最近要改一个视频播放的程序, 原来因为原来只是一个定制的功能,所以随便搞完了就交差了.没考虑什么效率之类的东西,画图部分用的的DrawDibDraw函数.

最近要求进化这个功能,要在15-25fps下绘制百万像素的视频帧.

那原来的程序试了一下,够呛,CPU占用率不大好看.于是想用DDraw7重新做一下画图部分,看能不能让效率高一点.

研究了一下DDraw的接口,基本的画图流程比还是较简单的,就是:
1. 建立主表面和后台表面.
2. do
{
    后台表面锁屏, 把RGB序列memcpy到后台表面锁住的ddsd里的缓冲中.
    主表面->Blt(..., 后台表面, ...).
}
while(...)

按照上面的流程写出程序,发现画出来的图是乱掉的. 于是猜想要么是RGB序列排列不对,要么是色深问题.很快排除掉前一个,确定是色深问题.
但是就是这个色深问题难住我了: 我把后台表面设置成RGB24,mask也设置了,发现还是不行,查了一下发现Blt不能完成色深的转换.开什么玩笑?不是要让我自己转吧?这可是百万像素实时图像啊...要是自己随便写一个转色深的循环,估计还没有VFW的方法快.

谁解决过这个问题啊?帮个忙.

你可能感兴趣的:(DirectDraw7.0播放RGB24序列, 有没有现实一点的转色深的方法?)