Windows下 Cesium Terrain Builder(简称CTB) 编译安装指南

基本流程

  编译与配置GDAL
  编译与配置Zlib
  编译与配置Cesium Terrain Builder

软件

  CMake 3.16.3
  visual studio 2015

资源(全部公开免费)

  Cesium Terrain Builder 源码下载地址
  GDAL-2.4.4 源码下载地址
  zlib1.2.11 源码下载地址

编译与配置GDAL

  GDAL的编译与配置是十分常见的操作,这里参考:
   https://blog.csdn.net/qq_32153213/article/details/81363588
   感谢该博主细致的描述

编译与配置zlib

  虽然在windows下zlib提供了编译好的库,但内容与CTB所要求有出入,这里建议自行编译,参考该篇文章提供的方法2
  https://www.cnblogs.com/MrOuqs/p/5751485.html

  • 新建文件夹,命名为zlibPackage(用于存放编译后所得文件)
  • 打开zlib源代码文件夹,复制zconf.hzlib.h头文件至zlibPackage文件夹中
  • 进入如下路径

zlib-1.2.11\contrib\vstudio\vc14

  使用vs2015打开项目工程文件 zlibvc.sln
  选择输出平台选择Debug x64,点击 生成->生成解决方案,开始编译。
  常见的错误解决方法见上述文章

  • 编译完成后在如下路径内得到 zlibwapi.dllzlibwapi.lib 将其复制到zlibPackage文件夹中

zlib-1.2.11\contrib\vstudio\vc14\x64\ZlibDllDebug

编译与配置CTB

  主要参考如下链接:
  https://www.jianshu.com/p/d8640841f2e1

  • 新建文件夹,命名为CTB(用于存放cmake生成的VS2015项目)
  • 新建文件夹,命名为CesiumTerrainBuilder(用于存放最终的CesiumTerrainBuilder应用)
  • 打开cmake软件,选择source code为Cesium Terrain Builder源代码文件夹,选择where to build the binariesCTB文件夹,勾选Advanced,点击Configure
  • 配置配置GDAL_INCLUDE_DIR为GDAL编译后的include文件夹,GDAL_LIBRARY为GDAL编译后的 .lib 文件
  • 配置ZLIB_INCLUDE_DIR是zlib动态库所在文件夹(即上文中的zlibPackage
  • 配置ZLIB_LIBRARY_DEBUGZLIB_LIBRARY_RELEASE是zlib的 .lib 文件(即 zlibPackage 下的zlibwapi.lib 文件),配置完成后如下,点击Generate生成项目
  • 进入CTB文件夹,打开Cesium Terrain Builder.sln 解决方案,点击生成。最终将下列目录内的所有文件拷贝至CesiumTerrainBuilder文件夹。完成编译

CTB\src\Debug
CTB\tools\Debug

检测安装是否成功

  在CesiumTerrainBuilder文件夹内打开power shell命令行工具 输入如下命令

ctb-info.exe --version

  若显示CesiumTerrainBuilder版本号,说明安装成功。

常见错误与解决方案

  • 编译zlib时输出错误信息

error LNK2026: 模块对于 SAFESEH 映像是不安全的

  解决方法参考如下链接
  https://blog.csdn.net/zengraoli/article/details/11919307

  • 编译CTB工具时弹出错误

无法打开源文件 unistd.h

  解决方法参考如下链接
  https://blog.csdn.net/Dashi_Lu/article/details/90054696

  • 安装完成后运行命令行工具,输出如下错误信息并闪退

ERROR 4:Unable to open EPSG support file gcs.csv

  解决办法为找到GDAL源代码文件夹,将如下路径添加至系统环境变量

gdal\gdal-2.4.4\data

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关于龙书第13章地形绘制的terrain项目运行出错问题 (注:龙书即:《DirectX9.0 3D游戏开发编程基础》) 在学习该教材时,当我们试着编译并运行13章地形绘制的terrain项目时,发现运行出错,并弹出了一个出错提示窗口,提示我们::访问vector 越界了 提示窗口的内容如下: -------------------------------------------------------------------- Microsoft Visual C++ Debug Library Debug Assertion failed! Program:...cuments and Settings\Administrator\Terrain\Debug\Terrain.exe File: d:\microsoft visual studio 10.0\vc\include\vector Line:932 Expression : vector subscript out of range For information on how your program can cause an assertion Failure , see the Visual C++ documentation on asserts. (Press Retry to debug the application) [终止(A)] [重试(R)] [忽略(I)] ---------------------------------------------------------------------------------- 问题主要出现在terrain.cpp 文件中的几个函数内部传递参数最终作为了vector的索引值,得到的索引值没有经过限定,导致超出了vector的界限-----最终访问越界. 修改的地方在下面这几处: 在terrain.cpp文档里搜索”//修改过!!!” bool Terrain::genTexture(D3DXVECTOR3* directionToLight) float Terrain::computeShade(int cellRow, int cellCol, D3DXVECTOR3* directionToLight) float Terrain::getHeight(float x, float z) 在terrain.cpp文档里搜索”//注意这里!!!” /int Terrain::getHeightmapEntry(int row, int col) bool Terrain::lightTerrain(D3DXVECTOR3* directionToLight) 在terrainDriver.cpp文档里搜索”//注意这里!!!” float height = TheTerrain->getHeight( pos.x, pos.z ); 我的修改主要是通过在传递索引值的地方,限定索引值的范围,这样就避免了vector访问越界,这也是龙书作者在写该13章的代码时一时所忽略掉的. 只修改过terrain.cpp文件中的内容,其他的都没动.所以可以只将terrain.cpp拷贝到工程中替换掉原来的就可以了.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值