简单,关于Blitter函数参数的小疑问

RookieStar 2004-07-31 12:27:52
关于IDIRECTDRAWSURFACE7::Blt,函数原型如下:
HRESULT Blt(
LPRECT lpDestRect,
LPDIRECTDRAWSURFACE4 lpDDSrcSurface,
LPRECT lpSrcRect,
DWORD dwFlags,
LPDDBLTFX lpDDBltFx
);

请问,如果我给lpDDSrcSurface传的参数为NULL,那这个所谓的“源表面”到底是什么?这个源表面用的是哪里的内存(Video Ram or System Ram)?传NULL主要的应用方面是什么?

谢谢!
...全文
97 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
RookieStar 2004-07-31
  • 打赏
  • 举报
回复
经你这么一说,我有点明朗了。

看书上260页这句话“……即源表面和RECT均为NULL。这是合理的,因为你是在使用blitter填充色彩,而不是要从一个区域向另外一个区域拷贝数据。”

这里的关键字就是色彩填充,也是这一小节标题“内存填充”的真实写照。
而且是从系统内存向显存进行内存填充。

多谢点拨!
drawstar 2004-07-31
  • 打赏
  • 举报
回复
我的qq是20546792,有兴趣一起多研究哦!
我想做游戏开发,学习中
drawstar 2004-07-31
  • 打赏
  • 举报
回复
它说了啊,它说想控制video ram就自己写驱动什么的,
反正很繁,呵呵,我也不会,不过控制硬件不是由directx做了吗?
它隐含的说了啦!一起努力啦!
drawstar 2004-07-31
  • 打赏
  • 举报
回复
凭直觉没用源表面应该什么都没考备,你怎么不试试看啊,
传null一般都是指默认的,试试看就知道干什么了,
不好意思,没看清楚
RookieStar 2004-07-31
  • 打赏
  • 举报
回复
我看的也是这书,相当棒!!!
不过这个问题书上说的不清楚啊!
drawstar 2004-07-31
  • 打赏
  • 举报
回复
不好意思,见笑了,那是目标,不知道源表面是null是什么,
学习
drawstar 2004-07-31
  • 打赏
  • 举报
回复
哦,不好意思,你说的是lpDDSrcSurface为null啊,
blt前面不是有调用它的表面吗?null指的就是它
drawstar 2004-07-31
  • 打赏
  • 举报
回复
NULL是默认为整个表面啊,lpDestRect也一样的,

这个directx会去控制的,一般你它会确保主表面在video ram中,
你可以建后备表面(双缓冲,三缓冲),它会尽可能用video ram的,不过如果video ram不够就比较慢,所以要最好检测video ram的大小,

建议看一下“windows游戏编程大师技巧”,很不错的书哦!
我也在学习中
RookieStar 2004-07-31
  • 打赏
  • 举报
回复
NULL就是整个表面
// 楼上的意思是lpSrcRect这个参数吧,你说的我知道。我问的是lpDDSrcSurface=NULL

如果是主表面就用video ram,离屏的可能用system ram
// 那在这个例子里,这个NULL源表面到底用哪里的内存?我的一种想法是:等到显存用完了才去调用系统内存,不知是否正确?
drawstar 2004-07-31
  • 打赏
  • 举报
回复
NULL就是整个表面,
“源表面”就是想要从哪考备的表面啊,
如果是主表面就用video ram,离屏的可能用system ram,
小弟也是初学,书上看的,说错了不要见笑啊!

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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