关于DirectDraw的Flip

今天在读《Windows游戏编程大师技巧2》第7章“页面切换”一节时被一段话搞晕了,

其中有一些可能让你难以理解的细节。首先,如果后备缓冲被切换到了主缓冲,后备缓冲会变成主缓冲吗?主缓冲又会不会变成后备缓冲呢?如果这样,需要不需要每隔一帧就在主表面进行绘制呢?这个问题看似来势汹汹,但实际上它并不会发生。事实上,指向VRAM的指针是由硬件切换的, DirectDraw和编程人员的观点来看,后备缓冲表面总是离屏的,而主表面总是可见的。所以你总是在后备缓冲中进行绘制,并且每帧与主表面作切换。

<script type="text/javascript"> </script>  看完之后,不明白每次FLIP之后主surface指向的VRAM到底是变了还是没变?虽然99%的情况应该是前者,但这段说得不是太清楚,所以还是写了个程序验证了一下。

 结果不出所料,每次FLIP之后,主surface和后备surface <script type="text/javascript"> </script> 所指向的VRAM发生了交换,但主surface这个结构体的其它结构并没有变换(因为FLIP要求主备两个surface在像素格式方面的属性要一致)。可能这就是原文要说明的意思吧。

顺便说说对这本书的评价,总体上来说还是不错的,但老外写文章多数比较随意,结构方面不是很严谨,加之附上一些个人感叹,给译者也带来不少麻烦。

遇到不明白的地方一是看原文,二是亲手实践,毕竟实践是检验真理的唯一标准。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值