为什么我创建了 YV12 的 Overlay Surface , 但是图像不会更新呢?

hugeice 2005-04-04 03:00:22
首先我创建了一个'UYVY'格式的Overlay表面, 将一个视频序列读入其中, 在我的窗口中能看到叠加的视频, 一切正常(我以25fps的速度更新Overlay表面).
然后我将'UYUV'改为'YV12' (我的显卡TNT2支持YV12格式的, 我用GetFourCC看过), 所有函数调用成功(UpdateOverlay调用也成功了), 但是我往表面内存中写入图像时, 窗口中的图像没有更新, 奇怪的是当我移动窗口时(我在窗口的OnMove中调用了UpdateOverlay)图像才会更新, 停止移动窗口, 图像就又不动了:(
还有'YV12'格式是非打包格式, 那么 Y 和 U/V 分量的Pitch必然不同, 但是Lock函数返回的 DDSURFACEDESC2 结构中只有一个Pitch, 是否 U/V 分量的Pitch总是 Y 分量的一半呢??

以上Overlay表面在调用UpdateOverlay表面时设置的目的矩形和源矩形是一样大的, 不存在硬件不支持缩放的可能(根本就没有缩放嘛)

有谁知道是什么原因, 哪里可以找到更详细的关于DirectDraw中的YV12 Overlay表面的资料吗?
...全文
172 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,552

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧