游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2129|回复: 1

问一个《windows游戏编程大师技巧》源码的问题

[复制链接]

1

主题

266

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
发表于 2010-1-15 15:37:00 | 显示全部楼层 |阅读模式
大家有使用过《windows游戏编程大师技巧》书中的T3D引擎么?
我在看他的直线算法时发现这个T3D库的一个问题。
我发现如果在窗口模式下运行程序,如窗口是640*480,那么直线在y=240和x=320这两个位置上画不出来(这个位置正好是客户区大小的一半多一个像素处)。
我试过直接用back buffer在这些位置上些像素,一样显示不出来。
说明一下,他的back surface是设置在内存中的,我在试验时发现如果将back buffer设置到显存中,那么刚才我说的这些位置的像素能显示出来,但是客户区右边和下边界的像素就没有了。
但程序在全屏模式下没看出问题来。而且书中编译好的例子中一样存在这个问题,应该是T3D库的问题,但我找不出哪里有毛病。

不知道是不是我对win32、DDraw编程的理解有误?  我再问几个基本问题:
1.如果我希望我的窗口客户区的大小为640*480,那么传给AdjustWindowRectEx()函数中的rect该设置成什么?是{0,0,639,479}么?
2.如果DDraw裁剪器中设置裁剪范围为{0,0,10,10},那么到底裁剪了多大范围的像素?是长宽分别11个像素么?
3.如果在创建surface时的高宽设置的是480、640,那么整个surface的最右下的像素的索引是不是{639,479}?

不知道各位高人有没有遇到过这样的问题? 或是谁能提供下解决思路,谢谢!

1

主题

266

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
 楼主| 发表于 2010-1-16 22:49:00 | 显示全部楼层

Re:问一个《windows游戏编程大师技巧》源码的问题

恩  问题好像解决了!
是LaMothe错了,他的函数库中的flip操作中定义的区域有误。
但好像是因为微软更改了rect的定义!  也不知道是不是这样才导致错误的。
反正修改后看起来没问题了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-16 00:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表