|
|
有n*m格的地图 n m都是2的倍数
现在要对 地图进行裁剪,使得在视锥外的部分不渲染。算法如下
zr= 1.0 zf = 33.0
宽高比是 4:3
视角是90°
用
PV0( 4/3, 1,1 )
PV1( -4/3, 1,1 )
PV2( 4/3, -1,1 )
PV3( -4/3, -1,1 )
PV4( 4*33/3, 33,33 )
PV5( -4*33/3, 33,33 )
PV6( 4*33/3, -33,33 )
PV7( -4*33/3,-33,33 )
这8个点乘视图矩阵的逆矩阵 的到的应该就是 视锥在世界空间的顶点坐标
PW0,PW1,PW2,PW3,PW4,PW5,PW6,PW7。 然后算出视锥在世界空间的包围球的球心和半径(用d3d的一个函数)
剪切地图网格的时候,用每个网格的包围球与视锥包围球进行比较。得出网格是否可见
if( 球心距离 <= 半径和 )
return true;
请问这个算法是不是有问题?
因为 我在测试的时候发现 当镜头在地图边界附近的时候 边界最外层的 网格有部分没有渲染
如图
发不了图。。。。。。。郁闷!!!!! |
|