GeoMipMap地形万能索引生成器

此函数用于生成GeoMipMap地形算法的索引Buffer,可以生成一个由参数指定的特定Patch的所引数据,生成的几何体为三角形条带,生成三角形中有部分退化三角形,用于三角形条带的连接。生成的三角形是CCW或者CW一致的。

pIndex     :指向索引Buffer当前填充位置
wWidth    :Patch的大小,取值范围9,17,33......
wLevel     :Lod级别,取值范围0,1,2,3......,数字越小细节级越高,0为最高细节级
bUp,bDown,bLeft,bRight:上下左右四个方向是否连接低细节级Patch
返回值    :返回填充的索引数据个数,由于生成的是三角形条带,实际生成的三角形数目为返回值减2

int GenerateStripIndex(WORD* pIndex, WORD wWidth, WORD wLevel,  bool bUp,  bool bDown,  bool bLeft,  bool bRight)
{
     WORD i, j;
     WORD w1, w2;
     WORD wPower = 1;

     for( i=0; i<wLevel; i++ )
          wPower *= 2;

     WORD wGridWdith = (wWidth - 1) / wPower;
     WORD wPitch = wGridWdith * 2 + 4;
     WORD *p = pIndex;
     w1 = 0;

     for( j=0; j < wGridWdith / 2; j++ )
     {
          w2 = w1 + wWidth * wPower;
          for( i=0; i < wGridWdith; i++)
          {
               *p++ = w1;
               *p++ = w2;
               w1 += wPower;
               w2 += wPower;
          }

          *p++ = w1;
          *p++ = w2, *p++ = w2, *p++ = w2;

          w1 = w2 + wWidth * wPower;
          for( i=0; i < wGridWdith; i++)
          {
               *p++ = w1;
               *p++ = w2;
               w1 -= wPower;
               w2 -= wPower;
          }

          *p++ = w1;
          *p++ = w2, *p++ = w1, *p++ = w1;
     }


     if( bDown )
     {
          p = pIndex + 2;
          for( i=0; i<wGridWdith / 2; i++)
          {
               (*p) -= wPower;
               p += 4;
          }

     }


     if( bUp )
     {
          p = pIndex + wPitch * (wGridWdith - 1) + 2;
          for( i=0; i<wGridWdith / 2; i++)
          {
               (*p) += wPower;
               p += 4;
          }

     }


     if( bRight )
     {
          for( i=0; i<wGridWdith / 2; i++)
          {
               p = pIndex + wPitch * 2 * i + wPitch - 3;
               p[0] += wWidth * wPower;
               p[1] += wWidth * wPower;
               p[2] += wWidth * wPower;
               p[4] += wWidth * wPower;
          }

     }


     if( bLeft )
     {
          for( i=0; i<wGridWdith / 2; i++)
          {
               p = pIndex + wPitch * 2 * i;
               p[1] = p[0];
               p[wPitch * 2 - 3] -= wWidth * wPower;
          }

     }


     return (wGridWdith * 2 + 4) * wGridWdith - 2;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 本软件对指定的目录下的指定属性、指定扩展名文件(包括子目录下的文件)进行编目索引,保存为文件(索引文件:txt、html、rtf)。 2. 索引文件中每一项就是文件名,可以无扩展名,可以使用通配符,可以包含属性,按所属目录进行分类。 3. 文件名每一项可以进行连续编号,也可以按目录分别进行编号,还可以不要编号,可以选择编号方式。目录名单独编号。 4. 该软件简单易用,方便用于文档编辑的人进行文件编目,特别适合档案管理。欢迎使用,并提出改进意见。 5. 运行坏境:winXP/win7/WIN10。 6. 该软件为共享软件,已授权给各位免费使用。若要体谅作者的辛苦,请向作者捐款进行注册,按作者和账号进行汇款。 作者: 周凤鸣 email:738076391@QQ.com QQ: 738076391 2015年10月28日 版本说明: 1.5 尚在开发中。计划增加一些音频、视频文件的选择类型,同时增加不同类型文件统计分析功能。 1.4 win10下通过,优化了代码,修正了错误。应某些网友要求增加了一些线条,取消了保存为DOC文件,改为保存为rtf文件,增加了显示文件大小、时间的内容。 1.3 在Win7下通过 1.2 增加输出为Word文档,优化了代码。增加了部分文件属性选项。 1.1 增加输出为html文件,优化了界面和代码。允许选择被索引的文件属性(只读、档案、正常、子目录),选择被索引的文件类型(所有、txt、doc、htm、其它)。 1.0 能够编目索引的文件属性可以是只读、归档、正常和子目录,不能包含隐藏、系统、临时、连接档属性。输出为文本文件。 使用方法: 被索引文件属性:无论选择多少项,只要搜索到的文件某一项属性符合即被选择,也就是属性之间是“或”的关系;选中“子目录”,表示搜索子目录下的文件。 被索引文件类型:各种类型之间是“或”的关系。比如,选择了txt和doc两个类型,就是表示搜索txt或者doc文件,“其他文件”中可以使用通配符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值