|
大家有使用过《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}?
不知道各位高人有没有遇到过这样的问题? 或是谁能提供下解决思路,谢谢! |
|